【发布时间】:2011-05-04 00:22:27
【问题描述】:
有没有办法在预处理器宏中使用sizeof?
例如,这些年来有很多情况我想做这样的事情:
#if sizeof(someThing) != PAGE_SIZE
#error Data structure doesn't match page size
#endif
我在这里检查的确切内容是完全编造的 - 重点是,我经常喜欢进行这些类型的(大小或对齐)编译时检查,以防止有人修改可能未对齐的数据结构或重新调整会破坏它们的东西的大小。
不用说 - 我似乎无法以上述方式使用sizeof。
【问题讨论】:
-
这就是构建系统存在的确切原因。
-
这就是为什么#error 指令应该始终使用双引号(由于“不”而导致的未终止字符常量)的确切原因。
-
你好@Brad。请考虑将您接受的答案更改为 nevermind 的答案,因为与此同时,当前接受的答案有点过时了。
-
@BodoThiesen 完成。
-
看起来整个问题和答案都复制到newbedev.com/how-can-i-use-sizeof-in-a-preprocessor-macro。