noi*_*put 2 c struct initializer
struct S {
int a;
};
int a = ((struct S) {8}).a;
Run Code Online (Sandbox Code Playgroud)
编译器报告错误"初始化元素不是编译时常量",为什么?
因为括号中的结构实际上是一个运行时的东西.您只能在初始化时将常量分配给全局.例如
int a = 8;
Run Code Online (Sandbox Code Playgroud)
你不能用全局变量做到这一点:
int b = 8;
int a = b; // Because b is a run-time variable
Run Code Online (Sandbox Code Playgroud)
通常,此技术用于定义全局常量:
#define MY_CONSTANT 8
// Then somewhere else you can use it...
int a = MY_CONSTANT;
// or
struct S s = {MY_CONSTANT};
Run Code Online (Sandbox Code Playgroud)