Dear Amit,
I attached a small C-like source for /bin/cpp,
it checks the maximum bitshift operation that
C preprocessor can work well. Please execute
/bin/cpp ./cpp-bitshift-test.c
and send me its output.
For example, the output by GCC on Linux/i386
finishes as:
#include limits.h
#if !(0x 64) (0x1 64)
# define CPP_MAX_BITSHIFT 64
#elif !(0x7FFF 63) (0x 63)
# define CPP_MAX_BITSHIFT 63
#elif !(0x 48) (0x1 48)
# define CPP_MAX_BITSHIFT 48
#elif !(0x7FFF
Dear Amit,
Thanks! It seems that xlc's cpp cannot handle bitshift for
64-bit constants, at least, if the constants lack the suffix
for long (or unsigned long) integer. I attached yet another
testing code that the constants greater than 32-bit range
have the suffix L to indicate long type. Could
#include limits.h
#if !(0xL 64) (0x1L 64)
# define CPP_MAX_BITSHIFT 64
#elif !(0x7FFFL 63) (0xL 63)
# define CPP_MAX_BITSHIFT 63
#elif !(0xL 48) (0x1L 48)
# define CPP_MAX_BITSHIFT 48
#elif
Dear Amit,
Thanks again! According to the line
./cpp-bitshift-test2.c, line 11.32: 1506-207 (W) Integer constant
0x1L out of range.
the integer constant greater than 32-bit is inappropriate
for xlc's cpp. I think FreeType2 header for xlc should not
be shared between 32-bit and 64-bit