Sintaxe
#ifndef <identificador>
...
<instruções>
...
[ #else ]
...
<instruções>
...
[ #endif ]
Propósito
A diretiva #ifndef compila uma seção de código-fonte apenas se um determinado identificador não tiver sido definido.
Argumentos
<identificador>
Define o nome do identificador que será testado para comprovar a sua inexistência.
Utilização
A diretiva #ifndef ... #endif permite a realização de compilações condicionais. A compilação condicional permite que um determinado trecho de código-fonte seja ou não compilado, dependendo da inexistência ou não de um identificador. Um identificador pode ser definido pela diretiva #define.
Se a cláusula #else for especificada e o identificador não existir, o trecho de código entre o #ifndef e o #else será compilado. Se o identificador existir, o trecho de código entre o #else e o #endif é que será compilado.
Se a cláusula #else não for especificada e o identificador não existir, o trecho de código entre o #ifndef e o #endif será compilado. Se o identificador existir, esse trecho de código não será compilado.
Dicas
A compilação condicional é útil principalmente quando for necessária a manutenção de várias versões diferentes do mesmo programa. Para cada versão poderá ser compilado um determinado trecho de código diferente, de acordo com os identificadores que forem especificados.
A diretiva #ifndef ... #endif é o inverso da diretiva #ifdef ... #endif.