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 utilizar en la directiva de preprocesador #if como:¿Por qué no puedo usar sizeof en una condición de preprocesador?
#if 4 == sizeof(int)
typedef int Int32;
#endif
(cygwin-gcc 3.4.4, así como Visual C++ 6.0 informe de errores de compilación)
Por qué no es tal uso ¿permitido?
En realidad, el preprocesamiento ocurre durante la compilación, solo en una de las fases anteriores. La evaluación de 'sizeof 'ocurre en una fase posterior. – sbi
@sbi El preproceso no forma parte de la compilación; el compilador normalmente ejecuta el preprocesador antes de la compilación real, pero puede indicar al compilador que no lo haga. La respuesta de RichN es 100% correcta. – qrdl
Bueno, estaba equivocado, pero solo en terminología: es una de las fases de _translation_. De acuerdo con este http://stackoverflow.com/questions/1476892/1479972#1479972, tampoco existe una fase llamada "compilación", entonces, ¿qué significa eso que parece estar abierto a la interpretación? – sbi