本文均来自狄泰软件学院,谢绝转载


#define定义的宏常量本质为字面量(不占用内存)


const常量,是只读变量(c语言),占用内存



宏表达式与函数的对比

*宏表达式被预处理器处理,编译器不知道宏表达式的存在

*宏表达式用“实参”完全替代形参,不进行任何运算

*宏表达式没有任何的“调用”开销

*宏表达式中不能出现递归定义


对于宏而言,是没有作用域限制的(定义完宏,后面直接使用)因为编译器不知道宏定义标识符的存在,它是由预处理器处理的。


宏        含义                          示例

_FILE_    被编译的文件名                file1.c

_LINE_    当前行号                      25

_DATA_    编译时的日期                  Jan 31 2012

_TIME_    编译时的时间                  17:01:01

_STDC_    编译器是否遵循标准C规范        1



小结

预处理器直接对宏进行文本替换

宏使用时的参数不会进行求值和运算

预处理器不会对宏定义进行语法检查

宏定义时出现的语法错误只能被编译器检测

宏定义的效率高于函数调用

宏的使用会带来一定的副作用