Compiler-Anweisung
Eine Compiler-Anweisung (englisch compiler directive oder pragma) ist eine in den Quelltext eingefügte Steueranweisung für den Compiler. Der Umfang und die Syntax von Compiler-Anweisungen sind von der Programmiersprache und teilweise auch vom gewählten Compiler abhängig.
Beispiele
In der Programmiersprache Algol 68 werden Compiler-Direktiven zwischen pr
und pr
oder zwischen pragmat
und pragmat
eingeschlossen. Dies ist der Ursprung des Begriffs Pragmat.
C-Compiler verwenden einen C-Präprozessor, der Compiler-Direktiven interpretiert. Beispielsweise weist #include <foo.h>
den Präprozessor an, den Inhalt der Datei foo.h an dieser Stelle im Quelltext einzufügen. Mit der Anweisung #pragma eigenschaft
wird eine Eigenschaft dem Compiler angezeigt. Ein Beispiel für eine Eigenschaft ist die Annotation eines parallelisierbaren Code-Blocks, falls der C-Compiler den OpenMP-Standard unterstützt:
#pragma omp parallel for reduction(+:c)
for (int i = 0; i < length; ++i)
c += a[i]*b[i];
In der Programmiersprache Pascal werden Compiler-Direktiven als spezielle Kommentare definiert. Kommentare, deren erstes Zeichen ein $
ist, werden als Direktive interpretiert. Beispielsweise schaltet {$Q+}
die Codegenerierung von Indexüberprüfungen von Arrayzugriffen ein.
In der Programmiersprache Ada werden Compiler-Direktiven durch das Schlüsselwort pragma
eingeleitet. So wird z. B. mit pragma OPTIMIZE(TIME);
die Programmoptimierung gesteuert.
Der Haskell-Compiler GHC unterstützt das Setzen von Kommandozeilen-Optionen auch in der Quelltextdatei über Compiler-Direktiven. Ein Beispiel ist die Aktivierung von ghc-Haskell-Spracherweiterungen, die mit der Direktive {-# OPTIONS_GHC -fglasgow-exts #-}
angefordert wird.
In der SAP-Programmiersprache ABAP werden Pragmas verwendet, um Warnungen verschiedener Prüfwerkzeuge auszublenden. Der Programmierer erklärt damit, dass er die betreffende Syntax bewusst verwendet und den konkreten Einsatz auf Unbedenklichkeit geprüft hat. So können etwa performance-kritische Anweisungen hingenommen werden, wenn im konkreten Einsatzzweck keine langen Laufzeiten zu erwarten sind oder aber bewusst toleriert werden können.