2011-02-22 8 views

Respuesta

56

Sí, se puede confiar en él. El estándar C99 especifica en §6.10.1 ¶3:

Después de que se han realizado todos los reemplazos debido a la expansión de la macro y la definida unario operador, todos los identificadores restantes se sustituyen con el PP-número 0

Edición

lo siento, pensé que era una pregunta C; Aún así, no es gran cosa, la sección equivalente en el estándar de C++ (§16.1 ¶4) establece:

Después de todos los reemplazos debido a la expansión macro y el operador unario definido se han realizado, todos los identificadores y las palabras clave restantes, a excepción de true y false, son reemplazados con el PP-número 0

la única diferencia es la diferente manejo de true y false, que en C no necesitan un manejo especial, mientras que en C++ que tienen un significado especial incluso en la fase de preprocesamiento.

12

Un identificador que no está definido como macro se convierte a 0 antes de que se evalúe la expresión. La excepción es el identificador true, que se convierte en 1. Esto es específico del preprocesador C++; en C, esto no ocurre y debería incluir <stdbool.h> para usar true de esta manera, en cuyo caso se definirá como una macro y no se requiere un manejo especial.

Cuestiones relacionadas