如何在g ++下检查预处理器中unsigned
的大小? sizeof
是不可能的,因为在预处理过程中没有定义它。
答案 0 :(得分:26)
这可能不是最优雅的方法,但您可以利用的一件事是在“limits.h”中定义的UINT_MAX。那就是......
如果UINT_MAX == 65535,那么你就知道sizeof(unsigned)= 2
如果UINT_MAX == 4294967295,那么你就知道sizeof(unsigned)= 4。
等等。
正如我所说,不优雅,但它应该提供一定程度的可用性。
希望这有帮助。
答案 1 :(得分:9)
根据Sparky的回答,这是一种看起来更好的方式(通过消除显式数字)
#include <limits.h>
#include <stdint.h>
//Check if size if 4bytes
#if UINT_MAX == UINT32_MAX
....
#endif
<limits.h>
定义INT_MAX
,<stdint.h>
定义UINT32_MAX
。通常,<stdint.h>
给出具有指定宽度的整数类型。