【发布时间】:2013-07-30 10:26:41
【问题描述】:
我知道以下是有效代码:
#define SOMEMACRO 10
int arr[SOMEMACRO];
结果为@987654322@。
如果我想创建一个 2 倍大小的数组(并且仍然需要其他地方的原始宏),这是有效的代码吗?
#define SOMEMACRO 10
int arr[2 * SOMEMACRO];
预编译后为int arr[2 * 10]。这仍然被编译器视为常量表达式吗?
快速浏览后它似乎可以工作,但这是定义的行为吗?
【问题讨论】:
-
是的,这是在编译时评估并用作常量。