#ifndef-Direktive

Mittels der #ifndef-Direktive wird genauso wie bei der #if-Direktive eine bedingte Compilierung eingeleitet. Der Preprozessor prüft hier jedoch, ob das angegebene Makro inexistent ist.






No Big number defined.
#include <stdio.h>
// #define THE_BIG_NUMBER 99999999

int main(){
  #ifndef THE_BIG_NUMBER
    printf("No Big number defined.\n");
  #else
    printf("Big number: %d\n", THE_BIG_NUMBER);
  #endif
  return 0;
}

Details

Die #ifndef-Direktive bewirkt dasselbe wie #if ! defined.

Die #ifndef-Direktive wertet den zu prüfenden Audruck nicht aus, sondern prüft lediglich dessen Existenz. Wenn das angegebene Makro nicht existiert, so ist die Bedingung erfüllt und der Code innerhalb des Blocks wird compiliert. Andernfalls wird er komplett verworfen.

Häufig wird die #ifndef-Direktive im Zusammenhang mit dem einmaligen Einbinden von Dateien, sowie bei der Prüfung auf Debug oder Release angetroffen.

Eine weitere, häufig gesehende Verwendung der #ifndef-Direktive findet sich bei der Unterscheidung zwischen Debug und Release mittels dem vordefinierten Makro NDEBUG.