How can I check the size of an unsigned
in the preprocessor under g++? sizeof
is out of the question since it is not defined when during preprocessing.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
This may not be the most elegant method, but one thing that you may be able to leverage is UINT_MAX defined in "limits.h". That is, ...
if UINT_MAX == 65535, then you would know that sizeof (unsigned) = 2
if UINT_MAX == 4294967295, then you would know that sizeof (unsigned) = 4.
and so on.
As I said, not elegant, but it should provide some level of usability.
Hope this helps.
回答2:
Based on Sparky's answer, here is a way that would look a bit nicer (by eliminating the explicit numbers)
#include <limits.h>
#include <stdint.h>
//Check if size if 4bytes
#if UINT_MAX == UINT32_MAX
....
#endif
<limits.h>
defines INT_MAX
and <stdint.h>
defines UINT32_MAX
. Generally, <stdint.h>
gives integer types with specified widths.