宏定义
#define<名字><值>
- 没有结尾的分号
- 名字必须是一个单词,值可以是任何东西
#define pi 3.1415926
- 如果一个宏的值中有其他宏的名字,也会被替换
- 如果一个宏的值超过一行,最后一行之前的行末要加
\
- 宏的值后面出现的注释不会被当作宏的一部分
- 没有值的宏
#define _DEBUG
#define PI 3.14
#define PI2 2*PI
#define PRT printf("hello"); \
printf("ok")
int main(){
printf("%.2f\n",PI);
printf("%.2f\n",PI2);
PRT;
return 0;
}
预定义的宏
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
#include
int main(){
printf("%s:%d\n",__FILE__,__LINE__);
printf("%s,%s\n",__DATE__,__TIME__);
return 0;
}
带参数的宏
- 类似于函数的宏
#define cube(x) ((x)*(x)*(x))
可以带参数
#include
#define cube(x) ((x)*(x)*(x))
int main(){
printf("%d",cube(2));
return 0;
}
- 带参数宏的定义规则:一切都要括号,整个值要括号,参数出现的地方要括号
#define RAD(X) ((X)*52)
- 错误的的宏定义:
#define RAD(x) (x*52)
/ #define RAD(x) (x)*52