#define 指令 (常量)
为应用程序中的常量分配有意义的名称的预处理器指令。
#define identifiertoken-string |
---|
参数
项 | 说明 |
---|---|
标识符 |
常量的标识符。 |
token-string [可选] |
常量的值。 此参数由一系列标记组成,例如关键字、常量或完整语句。 一个或多个空格字符必须将此参数与 标识符 参数分开;此空格不被视为替换文本的一部分,也不被视为文本最后一个标记后的任何空格。 如果排除此参数,则会从源文件中删除 标识符 参数的所有实例。 标识符保持定义状态,可以使用 定义的#if、#ifdef和#ifndef指令进行测试。 |
备注
源文件中#define指令之后发生的标识符参数的所有实例都将替换为 token-string 参数的值。 仅当标识符形成令牌时,才会替换该标识符;例如,如果标识符出现在注释中、字符串内或作为较长标识符的一部分,则不会替换该标识符。
#undef 指令指示预处理器忘记标识符的定义;有关详细信息,请参阅 #undef 指令 (DirectX HLSL) 。
使用 /D 编译器选项定义常量的效果与在文件开头使用 #define 指令的效果相同。 最多可以使用 /D 选项定义 30 个常量。 有关如何使用它的示例,请参阅 #ifdef 和 ) 的示例部分。
示例
以下示例将标识符 WIDTH 定义为整数常量 80,然后根据 WIDTH 和整数常量 10 定义 LENGTH。
#define WIDTH 80
#define LENGTH ( WIDTH + 10 )
LENGTH 的每个后续实例都替换为 (WIDTH + 10) ,而 WIDTH + 10 的每个后续实例将替换为表达式 (80 + 10) 。 WIDTH + 10 周围的括号很重要,因为它们控制了如下语句中的解释。
var = LENGTH * 20;
在预处理阶段之后, 语句变为以下内容,计算结果为 1,800。
var = ( 80 + 10 ) * 20;
如果没有括号,结果将如下所示,计算结果为 280。
var = 80 + 10 * 20;