gpt4 book ai didi

c - 编译时 Sizeof 结构成员技巧不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:05 25 4
gpt4 key购买 nike

在这里找到这个答案: sizeof a struct member

将其完全复制到我的代码中,但我的编译器反对我有一个指向不完整类类型的指针。

uint8_t clStructCount = sizeof(((struct ALMConfStr *) 0)->IntelRecsPerPg);

我做错了什么?我想在运行时将 clStructCount 设置为等于 IntelRecsPerPg 的值;我认为这是这样做的技巧。

谢谢!

最佳答案

您的结构定义需要在编译器遇到您的 sizeof 代码时可见

所以,这个翻译单元应该可以工作:

struct ALMConfStr {
int IntelRecsPerPg[MagicNumber];
};
// ...
uint8_t clStructCount = sizeof(((struct ALMConfStr *) 0)->IntelRecsPerPg);

无论是全部在一个文件中,还是结构在 sizeof 代码之前的 header #included 中。

但是,这:

struct ALMConfStr;
// ...
uint8_t clStructCount = sizeof(((struct ALMConfStr *) 0)->IntelRecsPerPg);

不会工作,因为编译器不知道 struct ALMConfStr 由什么组成,或者 IntelRecsPerPg 可能在什么地方那个上下文。

关于c - 编译时 Sizeof 结构成员技巧不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589584/

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