Mam pytanie dotyczące dyrektyw preprocesora w języku c ++:
Na przykład:
#ifndef QUESTION
//some code here
#ifndef QUESTION
//some code here
#endif
#endif
Czy możemy tego użyć w ten sposób i czy kompilator C ++ może dopasować ifndef
i endif
we właściwy sposób?
c++
c-preprocessor
preprocessor-directive
Brian Tompsett - 汤 莱恩
źródło
źródło
#define AAA #define XXX
- nie będzie działać poprawnie.Odpowiedzi:
Tak możemy. Te
#endif
mecze oświadczenie do poprzedniego#if
#ifdef
lub#ifndef
etc, dla których nie było odpowiedniego#endif
.na przykład
#if ----------| #if -----| | #endif ---| | #endif --------|
źródło
Tak, możesz zagnieżdżać
#if
/#endif
blokować. Niektóre style kodowania w C sugerują pisanie#ifdef CONDITION1 # ifdef CONDITION2 # endif #endif
użycie spacji do oznaczenia poziomu zagnieżdżenia.
źródło
#ifdef
#
dyrektywami preprocesora są dozwolone. Wielkie dzięki za tę wskazówkę!W Twoim kodzie sekcja #ifndef QUESTION zostanie odrzucona, chyba że #undef QUESTION.
Powodzenia!
źródło