常量声明 (#define, #undef)
编译器使用预处理程序指令在编译之前对源代码进行预处理。这个指令通常以#开始,因此编译器禁止在变量,函数等名称中使用符号。
每个指令都由一个单独的条目描述,并且在换行符之前都是有效的。在一个条目中不能使用多个指令。如果指令条目太大,可以使用'\'符号将其分隔成若干行。 在这种情况下,下一行被认为是指令条目的延续。
#define直接用来指定常量助记名。有两种形式:
#define identifier expression // 无参数形式
|
#define 直接代替 expression 为在源文件中找出更多的标识符目录。标识符仅代表自己时可被替换。如果标识符是注解一部分,字符串一部分或者其他标识符一部分,则不能代替。
常量标识符与变量名同样规则。值可以是多种类型:
#define ABC 100
|
expression 由几种标记组成,例如关键字,常量,有常量无常量表达式。expression在直线末端结束,不可转到下一行。
示例:
#define TWO 2
|
参数形式 #define
通过参数形式,所有随后发现的标识符条目都将被考虑实际参数的表达式所取代。例如:
// a和b两个参数的示例
|
|
使用参数表达式时一定要在圆括号中附上参数,这将有助于避免不易发现的不明显的错误。如果我们不使用括号重写代码,结果将会有所不同:
// a和b两个参数的示例
|
使用参数形式时,最多允许8个参数。
// 正确的参数形式
|
#undef 指令
定义之前,#undef 指令取消宏替换声明。
示例:
#define MACRO
|
另见