Dlaczego nie mogę użyć sizeof w stanie preprocesora?

Rozumiem, że sizeof jest operatorem, który jest oceniany w czasie kompilacji na stałą całkowitą. Ale wydaje się, że nie można go użyć w dyrektywie preprocesora #if, takiej jak:

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

(cygwin-gcc 3.4.4, a także błędy kompilacji raportów w Visual C ++ 6.0)

Dlaczego takie użycie jest niedozwolone?

questionAnswers(2)

yourAnswerToTheQuestion