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.
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.
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.
精彩评论