gpt4 book ai didi

c - sizeof(struct foo) 不是常量?

转载 作者:行者123 更新时间:2023-12-04 10:11:32 25 4
gpt4 key购买 nike

我正在使用 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)];

而且这个表达式还需要是一个编译时常量,这让我认为这实际上不是枚举声明中的问题所在。

最佳答案

这看起来像是 Microchip XC8 编译器的限制/错误。

在枚举常量定义中,当 X 是聚合或 union 类型,或聚合类型或 union 类型的对象。

关于c - sizeof(struct foo) 不是常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18497753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com