#if-Direktive

Die #if-Direktive leitet eine bedingte Compilierung ein. Je nachdem, ob die Bedingung des ausgewerten Ausdrucks erfüllt wird, wird der nachfolgende Codeblock compiliert oder aber komplett weggelassen.






Large array
#include <stdio.h>
#define ARRAY_SIZE 10000000

int main(){
  #if ARRAY_SIZE > 1000
    printf("Large array\n");
  #endif
  return 0;
}

Als Codeblock gilt derjenige Teil zwischen den zusammengehörigen #if-, #else-, #elif-, #ifdef-, #ifndef- und #endif-Direktiven. Ein Codeblock kann weitere bedingte Compilierungen enthalten, Verschachtelungen sind erlaubt:



Very large array
#if ARRAY_SIZE > 1000
  #if ARRAY_SIZE > 100000
    printf("Very large array\n");
  #else
    printf("Large array\n");
  #endif
#endif

Details

Die Auswertung des Ausdruckes ist nicht wie normale Programmierung zu interpretieren. Bibliotheksfunktionen wie beispielsweise mathematische Berechungen können nicht ausgeführt werden. Folgende Elemente können in einem Prüf-Ausdruck vorkommen: