【发布时间】:2020-02-16 03:35:11
【问题描述】:
#include <stdio.h>
int b(){
return 5;
}
int main(){
static int a = b();
return 0;
}
以上代码无法在 C 中编译并出现此错误:
error: initializer element is not a compile-time constant
但在 C++ 中编译得很好。在 C 和 C++ 中初始化静态值有什么区别?
【问题讨论】:
-
这是一个理论问题吗?
-
这与同一个 OP 的前一个问题Zero, static and dynamic initialization of variables in C 密切相关(但略有不同)。
-
在错误信息中。初始化器必须是 C 中的常量表达式