#ifdef
dyrektywy i #ifndef
(C/C++)
#ifdef
Dyrektywy preprocesora i #ifndef
mają taki sam efekt jak #if
dyrektywa, gdy jest używana z operatoremdefined
.
Składnia
#ifdef
identifier
#ifndef
identifier
Te dyrektywy są równoważne:
#if defined
identifier
#if !defined
identifier
Uwagi
Można użyć #ifdef
dyrektyw i #ifndef
w dowolnym miejscu #if
. Instrukcja jest równoważna #ifdef
identifier
#if 1
, gdy identifier
została zdefiniowana. Jest ona równoważna #if 0
, gdy identifier
nie została zdefiniowana lub nie została zdefiniowana przez dyrektywę #undef
. Dyrektywy te sprawdzają tylko obecność lub brak identyfikatorów zdefiniowanych za pomocą #define
metody , a nie dla identyfikatorów zadeklarowanych w kodzie źródłowym języka C lub C++.
Te dyrektywy są udostępniane tylko pod kątem zgodności z poprzednimi wersjami języka. Preferowane defined(
identifier
)
jest wyrażenie stałe używane z dyrektywą.#if
Dyrektywa #ifndef
sprawdza przeciwieństwo warunku sprawdzanego przez #ifdef
element . Jeśli identyfikator nie został zdefiniowany lub jeśli jego definicja została usunięta z parametrem #undef
, warunek ma wartość true (nonzero). W przeciwnym razie warunek ma wartość false (0).
Specyficzne dla firmy Microsoft
Identyfikator można przekazać z wiersza polecenia przy użyciu /D
opcji . Można określić maksymalnie 30 makr za pomocą polecenia /D
.
Dyrektywa jest przydatna #ifdef
do sprawdzania, czy definicja istnieje, ponieważ definicję można przekazać z wiersza polecenia. Na przykład:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
END Microsoft Specific