我很好奇下面的代码片段为什么无法编译:
typedef struct Foo {
int a;
int b;
} Foo;
static const Foo FooZero = { 0, 0 };
typedef struct Bar {
Foo foo;
int c;
} Bar;
static const Bar BarZero = { FooZero, 0 };
它抱怨使用了FooZero
,并说明FooZero
不是编译时常量
。但它不是吗?我在这里理解错了什么吗?显然,我可以简单地用{0,0}
替换初始化程序中的FooZero
- 我提出问题的目的不是要解决问题,而是要尝试理解FooZero
实际上为什么不是编译时常量的根本原因。谢谢