mya*_*hya 14 c++ sizeof c-preprocessor
如何unsigned在g ++下检查预处理器中的a 的大小?sizeof因为在预处理期间没有定义它,所以是不可能的.
Spa*_*rky 26
这可能不是最优雅的方法,但您可以利用的一件事是在"limits.h"中定义的UINT_MAX.那是, ...
如果UINT_MAX == 65535,那么你就知道sizeof(unsigned)= 2
如果UINT_MAX == 4294967295,那么你就会知道sizeof(unsigned)= 4.
等等.
正如我所说,不优雅,但它应该提供一定程度的可用性.
希望这可以帮助.
根据Sparky的回答,这里有一种看起来更好的方式(通过消除显式数字)
#include <limits.h>
#include <stdint.h>
//Check if size if 4bytes
#if UINT_MAX == UINT32_MAX
....
#endif
Run Code Online (Sandbox Code Playgroud)
<limits.h>定义INT_MAX和<stdint.h>定义UINT32_MAX.通常,<stdint.h>给出具有指定宽度的整数类型.