C/C++中宏/Macro的深入讲解
通过 #define 指令定义一个宏。多行的宏经过编译后会还原到一行中。像下面这样,当宏存在覆盖时,会以新的为准,其结果为 37。Object-like 类型的宏看起来就像普通的数据对象,故名。多用于数字常量的情形下。且宏名一般使用全大写形式方便识别。函数类型的宏只在以方法调用形式使用时才会被展开,即名称后加括号,否则会被忽略。函数类型的宏,可以像正常函数一样指定入参,入参需为逗号分隔合法的 C 字面量。如果函数宏中入参在字符串中,是不会被展开的,它就是普通的字符串字面量,这样的结果是符合预期的。标准库及编译器中预设了一些有用的宏,可以在当某个宏不再使用时,可通过 #undef 将取注销掉。#undef 后紧跟宏名,后面不要跟其他东西,即使是函数类型的宏。
用户评论