Я понимаю, что sizeof - это оператор, который вычисляется во время компиляции до целочисленной константы. Но, похоже, его нельзя использовать в директиве препроцессора #if, например:
#if 4 == sizeof(int)
typedef int Int32;
#endif
(cygwin-gcc 3.4.4, а также Visual C ++ 6.0 сообщают об ошибках компиляции)
Почему такое использование запрещено?