Entiendo que sizeof es un operador, que se evalúa en tiempo de compilación a una constante entera. Pero parece que no se puede usar en la directiva de preprocesador #if como:
#if 4 == sizeof(int)
typedef int Int32;
#endif
(cygwin-gcc 3.4.4 así como Visual C++ 6.0 informan errores de compilación)
¿Por qué no se permite ese uso?
Porque sizeof
se evalúa en tiempo de compilación mientras se evalúan las directivas antes de compilación, y la parte que hace eso no es el compilador, por lo que no entenderá qué sizeof
medio.
El sizeof es un operador de C. No puede usar código C en directivas de preprocesador. Las directivas del preprocesador se evalúan antes de que tenga lugar la compilación.