用#define 定义函数块
来源:百度知道 编辑:UC知道 时间:2024/05/13 03:15:56
#define GG(a, b, c, d, x, s, ac) { \
(a) += G((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
比如这个函数,那些"\"有什么用?去掉的话程序会出错。
(a) += G((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT((a), (s)); \
(a) += (b); \
}
比如这个函数,那些"\"有什么用?去掉的话程序会出错。
c语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。
带参宏定义的一般形式为: #define 宏名(形参表) 字符串
在字符串中含有各个形参。 带参宏调用的一般形式为: 宏名(形参表)
例如:
#defineM(y)((y)*(y)+3*(y))/*宏定义*/
k=M(5);/*宏调用*/
在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为: k=5*5+3*5
程序2:
#include<stdio.h>
#define MAX(a,b)((a>b)?(a):(b))
int main(intargc,char*argv[])
{
intx,y,max;
printf("input two numbers:");
scanf("%d%d",&x,&y);
max=MAX(x,y);
printf("max=%d\n",max);
return0;
}
上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式 (a>b)?a:b ,形参a,b均出现在条件表达式中。程序中
max=MAX(x,y) 为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max=(x>y)?x:y;
用于计算x,y中的大数。
#define 条件编译
头文件(.h)可以被头文件或C文件包含;重复包含(重复定义)由于头文件包含可以嵌套,那么C文件就有可能包含多次同一个头文件,就可能出现重复定义的问题的。 通过条件编译开关来避免重复包含(重复定义)
\ 表示强制换行,而换行后的内容与前一行的内容编译器仍把它看