Почему я не могу использовать sizeof в состоянии препроцессора?

Я понимаю, что sizeof - это оператор, который вычисляется во время компиляции в целочисленную константу. Но, похоже, его нельзя использовать в директиве препроцессора #if, например:

#if 4 == sizeof(int)
    typedef int Int32;
#endif

(cygwin-gcc 3.4.4, а также ошибки компиляции отчетов Visual C ++ 6.0)

Почему такое использование запрещено?

Ответы на вопрос(2)

Ваш ответ на вопрос