#include<stdio.h>
#define PI 3.1415926 //后面不要加分号
这些都是编译预处理指令,不是C语言特有的。
1宏定义只是简单的字符替换,
如果#define x a+b 那么x*x在编译时会换成a+b*a+b,而不是(a+b)*(a+b),所以宏定义时要加括号防止出错
2宏里面如果有其他的宏,也会被替换,
3宏的值超过一行,最后一行之前的每一行行末要加\
4宏里面可以有注释
5宏定义可以没有值,只是告诉编译器有这个宏
6宏可以带参数 如#define MIN(a,b) ((a)>(b)?:(b):(a))
7预定义的宏
__LINE__ 源代码当前所在行的行号
__FILE__ 源代码的文件名
__DATE__ 编译时候的日期
__TIME__ 编译时候的时间
__STDC__
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("%s %d\n",__FILE__,__LINE__);
printf("%s %s",__DATE__,__TIME__);
return 0;
}
8部分宏会被inline函数取代