En este programa c
¿Es estándar para #if suponer constantes simbólicas indefinidas como 0?
#include<stdio.h>
int main()
{
#if UnDefinedSymbolicConstant==0
printf("UnDefinedSymbolicConstant is equal to 0\n ");
#else
printf("UnDefinedSymbolicConstant is not equal to 0\n");
#endif
return 0;
}
UnDefinedSymbolicConstant no ha sido #define
en cualquier lugar, aún se está asumiendo que como 0 y da la output on gcc-4.3.4
como:
UnDefinedSymbolicConstant is equal to 0
así, ¿Este el comportamiento estándar o funciona así solo en gcc?
Una buena manera de averiguar si algo es estándar o no es -std = c99 -pedantic. Esto debería deshabilitar todas las extensiones de gcc. Sin ellos, gcc se ajusta bastante bien al estándar. – Lundin
¿Estás seguro de que '-std = c99 -pedantic' capta todas las construcciones no estándar? Parece que está destinado a, pero si no me equivoco, todavía echa de menos algunos. Básicamente, todo lo que puede confiar en '-std = c99' es evitar permitir cosas que entren en conflicto con el comportamiento especificado por las normas, pero no necesariamente le impide hacer cosas que no entran en conflicto pero que no están especificadas por el estandar. '-pedantic' tiene la intención de advertirte sobre esto último, pero no estoy seguro de que esté completo. –