struct S {
int a;
};
int a = ((struct S) {8}).a;
编译器报告错误" Initializer元素不是编译时常量",为什么?
答案 0 :(得分:5)
因为括号中的结构实际上是一个运行时的东西。您只能在初始化时将常量分配给全局。 e.g。
int a = 8;
你无法用全局变量做到这一点:
int b = 8;
int a = b; // Because b is a run-time variable
这种技术通常用于定义全局常量:
#define MY_CONSTANT 8
// Then somewhere else you can use it...
int a = MY_CONSTANT;
// or
struct S s = {MY_CONSTANT};