Tengo una pregunta sobre las directivas de preprocesador en c ++:
Por ejemplo:
#ifndef QUESTION
//some code here
#ifndef QUESTION
//some code here
#endif
#endif
¿Podemos usarlo de esta manera y el compilador de C ++ puede coincidir con ifndef
y endif
de la manera correcta?
c++
c-preprocessor
preprocessor-directive
Brian Tompsett - 汤 莱恩
fuente
fuente
#define AAA #define XXX
, no funcionará correctamente.Respuestas:
Si podemos. La
#endif
declaración coincide con la anterior#if
#ifdef
o#ifndef
etc. para la que no ha habido una correspondencia#endif
.p.ej
#if ----------| #if -----| | #endif ---| | #endif --------|
fuente
Sí, puede anidar
#if
/#endif
bloques. Algunos estilos de codificación C le dirían que escriba#ifdef CONDITION1 # ifdef CONDITION2 # endif #endif
usando espacios para denotar el nivel de anidamiento.
fuente
#ifdef
#
que se permitían espacios entre las directivas del preprocesador. ¡Muchas gracias por ese consejo!En su código, la sección #ifndef PREGUNTA se descartará a menos que #undef PREGUNTA.
¡Buena suerte!
fuente