Sdílet prostřednictvím


#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 #ifdefkontroluje . 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

Viz také

Direktivy preprocesoru