本文均来自狄泰软件学院,谢绝转载
#define定义的宏常量本质为字面量(不占用内存)
const常量,是只读变量(c语言),占用内存
宏表达式与函数的对比
*宏表达式被预处理器处理,编译器不知道宏表达式的存在
*宏表达式用“实参”完全替代形参,不进行任何运算
*宏表达式没有任何的“调用”开销
*宏表达式中不能出现递归定义
对于宏而言,是没有作用域限制的(定义完宏,后面直接使用)因为编译器不知道宏定义标识符的存在,它是由预处理器处理的。
宏 含义 示例
_FILE_ 被编译的文件名 file1.c
_LINE_ 当前行号 25
_DATA_ 编译时的日期 Jan 31 2012
_TIME_ 编译时的时间 17:01:01
_STDC_ 编译器是否遵循标准C规范 1
小结
预处理器直接对宏进行文本替换
宏使用时的参数不会进行求值和运算
预处理器不会对宏定义进行语法检查
宏定义时出现的语法错误只能被编译器检测
宏定义的效率高于函数调用
宏的使用会带来一定的副作用
转载于:https://blog.51cto.com/12585676/1942709