#ifdef
direktiv a #ifndef
direktiv (C/C++)
Direktivy preprocesoru #ifdef
#ifndef
mají stejný účinek jako direktiva #if
při použití s operátorem defined
.
Syntaxe
#ifdef
identifier
#ifndef
identifier
Tyto direktivy jsou ekvivalentní:
#if defined
identifier
#if !defined
identifier
Poznámky
Direktivy #ifdef
a #ifndef
direktivy můžete použít kdekoli #if
. Příkaz #ifdef
identifier
je ekvivalentní #if 1
tomu, kdy identifier
byl definován. Je ekvivalentní #if 0
tomu, kdy identifier
nebyla definována nebo nebyla definována direktivou #undef
. Tyto direktivy kontrolují pouze přítomnost nebo nepřítomnost identifikátorů definovaných pomocí #define
, ne pro identifikátory deklarované ve zdrojovém kódu jazyka C nebo C++.
Tyto direktivy jsou poskytovány pouze z důvodu kompatibility s předchozími verzemi jazyka. Preferuje se defined(
identifier
)
konstantní výraz použitý se direktivou.#if
Direktiva #ifndef
kontroluje opak podmínky, kterou #ifdef
kontroluje . Pokud identifikátor nebyl definován nebo pokud byla jeho definice odebrána #undef
, podmínka je true (nenulová). V opačném případě je podmínka false (0).
Specifické pro Microsoft
Identifikátor lze předat z příkazového /D
řádku pomocí této možnosti. Lze zadat až 30 maker pomocí /D
.
Direktiva #ifdef
je užitečná pro kontrolu, jestli definice existuje, protože definici lze předat z příkazového řádku. Příklad:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
END Microsoft Specific