宏表达式与函数、#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...")

posted on 2017-09-15 15:43  白宫飘红旗  阅读(379)  评论(0编辑  收藏  举报