宏表达式与函数、#undef、条件编译、
宏表达式在预编译期被处理,编译器不知道宏表达式的存在。
宏表达式没有任何的调用开销
宏表达式中不能出现递归定义。
C语言中强大的内置宏
__FILE__:被编译的文件名 //双底线 __LINE__:当前行号 __DATE__:编译时的日期 __TIME__:编译时的时间 __STDC__:编译器是否遵循标准C规范 eg:printf("%s,%d Enter main()...\n",__FILE__,__LINE__);
注意:宏定义对空格比较敏感
#define f (x) ((x)-1)//Error,定义了个f,它需要被替换为x,但后面又有个((x)-1)没有任何意义
#undef 取消前面定义的宏
#undef _MIN_
条件编译是预编译指令命令,用于控制是否编译某段代码。
条件编译的意义:
1.条件编译使得我们可以按不同的条件编译不同的代码段,因而可以产生不同的目标代码。
2.#if...#else....#endif被预编译器处理;而if...else语句被编译器处理,必然被编译进目标代码。
#error的用法:
#error用于生成一个编译错误信息,并停止编译。
语法:#error message //注:message不需要用双引号包围
#pragma message
message参数在大多数的编译器中都有相似的实现
message编译时输出信息到编译输出窗口中
message可用于代码的版本控制
#pragma message("compile Android ADK 2.0...")