用#define 定义函数块

 

  
  
  
  
  1. #define GG(a, b, c, d, x, s, ac) { \ 
  2. (a) += G((b), (c), (d)) + (x) + (UINT4)(ac); \ 
  3. (a) = ROTATE_LEFT((a), (s)); \ 
  4. (a) += (b); \ 

 

\ 表示强制换行,而换行后的内容与前一行的内容编译器仍把它看作是同一行.
编译器识别define 的时候不是以分号结尾的,是以回车作为结束的。
#define后面定义的内容比须在同一行,而有时是为了让程序便于阅读,从中间进行换行,如果没有符号'\',则我们的换行表示 #define的结束,这也是为什么你去掉后会报错的原因.如果在这里加了'\',也可以说是对"回车"的转义,表示这里有一个回车字符而已,#define并没有结束.而程序编译的时候,编译器会忽略掉这些'\回车'的字符.

讲得不好,表达能力不强呵呵,但仍希望你能了解.如果你会用LINUX系统的话,你用命令行中输入 ls \回车 ,系统也不会执行ls这个命令.它会认为你命令仍没有输完,会继续等待用户的输入.

 
define int 定义函数
int fun(int a,int b){return (a+b)*(a-b);}void main(){int d,x,y;printf("input x,y:");scanf("%d%d",&x,&y);d=fun(x,y);printf("x*x-y*y=%d\n",d);
}

若写成define也可以 但保险一点的话应该写成
define fun(a,b) ((a)+(b))*((a)-(b)) 防止a,b是表达式形式

你可能感兴趣的:(#define,定义函数块)