我正在使用 Microchips XC8 C 编译器 1.12 进行开发。
我有以下代码片段,但编译器对此不满意。
struct _foo {
int a;
};
enum BAR {
CONST1 = sizeof(struct _foo)
};
我得到的错误是:main.c:6: error: integer expression required
为什么会产生该错误?C中任何结构的大小都不是常数吗?如果我使用 sizeof(int) 一切正常。
注意:XC8 编译器 v1.12 遵循 C90 标准,而不是现代 C99 标准。
PS这确实编译:
char abc[sizeof(struct _foo)];
而且这个表达式还需要是一个编译时常量,这让我认为这实际上不是 enum 声明中出了什么问题。