宏表达式与函数#undef条件编译

Posted 白宫飘红旗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宏表达式与函数#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...")

以上是关于宏表达式与函数#undef条件编译的主要内容,如果未能解决你的问题,请参考以下文章

条件编译#ifdef的妙用详解

C/C++:预处理(下)

理解宏定义

C/C++预处理指令#define,条件编译#ifdefine

#define,#undef宏学习

c语言基础——预处理详解