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 instrução #ifdef
identifier
é equivalente a #if 1
quando identifier
tiver sido definida. 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 expressão de constante defined(
identifier
)
usada com a diretiva #if
é preferencial.
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
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de