宏的通用属性:
1.宏的替换列表可以包含对其他宏的调用
2.预处理只会替换完整的记号,不会替换记号的片段
3.宏的作用范围通常到出现这个宏的文件末尾
4.宏不可以被定义两遍,除非两个宏的定义是一样的
5.宏可以适用#undef指令“取消定义”,取消定义指令在宏未被定义的情况下,不起任何的作用
宏定义中的圆括号:
需要圆括号的两条规则:
1.如果宏的替换列表中有运算符,那么始终要将替换列表放在圆括号中
2.如果宏有参数,每个参数每次在宏列表中出现的时时都要放入圆括号中
预定义宏:
c语言中的预定义宏:
_LINE_ 被编译的文件中的行号
_FILE_ 被编译的文件名
_DATE_ 编译的日期
_TIME_ 编译的时间
_STDC_ 编译器是否符合C标准(c89或c99)