C标准是否需要编译时常量表达式评估?

Mik*_*ham 3 c standards constantfolding

例如,是

static int a[1+1];
Run Code Online (Sandbox Code Playgroud)

有效标准C?对于标准的部分或全部版本?

我对编译器是否可以处理它感兴趣,但它是否是标准C的一部分.

Fre*_*Foo 6

C11,§6.6:

可以在转换期间而不是运行时期间评估常量表达式,并且因此可以在常量可以在任何地方使用.

所以是的,简单的常量折叠是强制性的,这个片段是有效的标准C.