检查预处理器中整数类型的大小

时间:2010-04-06 13:01:50

标签: c++ c-preprocessor sizeof

如何在g ++下检查预处理器中unsigned的大小? sizeof是不可能的,因为在预处理过程中没有定义它。

2 个答案:

答案 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>给出具有指定宽度的整数类型。