diretivas #ifdef
e #ifndef
(C/C++)
As diretivas de pré-processador #ifdef
e #ifndef
têm o mesmo efeito da diretiva #if
quando usada com o operador defined
.
Sintaxe
#ifdef
identifier
#ifndef
identifier
Essas diretivas são equivalentes a:
#if defined
identifier
#if !defined
identifier
Comentários
É possível usar as diretivas #ifdef
e #ifndef
em qualquer lugar onde #if
possa ser usada. A #ifdef
identifier
instrução é equivalente a #if 1
quando identifier
foi definido. Ela é equivalente a #if 0
quando identifier
não tiver sido definida, ou tiver sido indefinida pela #undef
diretiva. Essas políticas verificam somente a presença ou ausência de identificadores definidos com #define
, não para identificadores declarados no código-fonte C ou C++.
Essas políticas são fornecidas somente para compatibilidade com versões anteriores da linguagem. A defined(
identifier
)
expressão constante usada com a #if
diretiva é preferida.
A diretiva #ifndef
verifica o oposto da condição verificada por #ifdef
. Se o identificador não foi definido (ou a definição foi removida com #undef
), a condição é true (diferente de zero). Caso contrário, a condição será false (0).
Seção específica da Microsoft
O identificador pode ser passado da linha de comando usando a opção /D
. Até 30 macros podem ser especificadas com /D
.
A diretiva #ifdef
é útil para verificar se uma definição existe, porque uma definição pode ser passada da linha de comando. Por exemplo:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
Fim da seção específica da Microsoft