Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
例如,是
static int a[1+1];
有效标准 C? 对于标准的部分或所有版本?
我对编译器是否可以处理它不感兴趣,但它是否是标准 C 的一部分。
C11,§6.6:
常量表达式可以在翻译期间而不是运行时进行评估,因此可以在常量可能存在的任何地方使用。
所以是的,简单的常量折叠是强制性的,这个片段是有效的标准 C。
该标准明确定义了这一点。
数组声明器,6.7.5.2 (C99):
除了可选的类型限定符和关键字 static,[ 和 ] 可以分隔表达式或 *。如果它们分隔了一个表达式(它指定了一个数组的大小),那么该表达式应该是一个整数类型。如果表达式是常量表达式,它的值应大于零。