- (1)宏名一般用大写
- (2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
- (3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
- (4)宏定义末尾不加分号;
- (5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
- (6)可以用#undef命令终止宏定义的作用域
- (7)宏定义可以嵌套
- (8)字符串" "中永远不包含宏
- (9)宏定义不分配内存,变量定义分配内存。
- (10)宏定义不存在类型问题,它的参数也是无类型的。
#define STR(str) #str
#用于把宏定义中的参数两端加上字符串的""
比如,这里STR(myname)会被替换成"myname"
#define WIDE(str) L##str
则会将形参str的前面加上L
比如:WIDE("abc")就会被替换成L"abc"
如果有#define FUN(a,b) vo##a##b()
那么FUN(id ma,in)会被替换成void main()