Richtlinie (Programmierung) - Directive (programming)

In der Computerprogrammierung ist eine Direktive oder ein Pragma (von "pragmatisch") ein Sprachkonstrukt , das angibt, wie ein Compiler (oder ein anderer Übersetzer ) seine Eingabe verarbeiten soll. Direktiven sind nicht Teil der Grammatik einer Programmiersprache und können von Compiler zu Compiler variieren. Sie können von einem Präprozessor verarbeitet werden , um das Compilerverhalten festzulegen, oder als eine Form der In-Band- Parametrisierung fungieren .

In einigen Fällen geben Direktiven das globale Verhalten an, während sie in anderen Fällen nur einen lokalen Abschnitt betreffen, z. B. einen Programmcodeblock. In einigen Fällen, z. B. bei einigen C-Programmen, sind Anweisungen optionale Compiler-Hinweise und können ignoriert werden. Normalerweise sind sie jedoch vorgeschrieben und müssen befolgt werden. Eine Direktive führt jedoch keine Aktion in der Sprache selbst aus, sondern nur eine Änderung des Verhaltens des Compilers.

Dieser Begriff kann verwendet werden, um proprietäre Tags und Befehle (oder Markups) von Drittanbietern zu bezeichnen, die in Code eingebettet sind und zu einer zusätzlichen ausführbaren Verarbeitung führen, die die vorhandenen Compiler-, Assembler- und Sprachkonstrukte erweitert, die in der Entwicklungsumgebung vorhanden sind. Der Begriff "Direktive" wird auch auf verschiedene Arten verwendet, die dem Begriff Befehl ähnlich sind .

Der C-Präprozessor

In C und C ++ unterstützt die Sprache einen einfachen Makro- Präprozessor . Source - Leitungen , die vom Präprozessor behandelt werden sollen, wie #define und #include werden gemäß Präprozessordirektiven .

Ein anderes C-Konstrukt, die #pragma Direktive, wird verwendet, um den Compiler anzuweisen, pragmatische oder implementierungsabhängige Funktionen zu verwenden. Zwei bemerkenswerte Benutzer dieser Richtlinie sind OpenMP und OpenACC .

Syntaktische Konstrukte ähnlich wie C die Präprozessordirektiven, wie C # ‚s #if , werden typischerweise auch‚Richtlinien‘genannt, obwohl in diesen Fällen keine wirkliche Vorlaufphase beteiligt sein kann.

Alle Präprozessorbefehle beginnen mit einem Hash-Symbol (#).

Geschichte

Richtlinien Datum Algol 68 , wo sie als bekannt sind pragmats (von „pragmatische“) und bezeichnet pragmat oder pr ; In neueren Sprachen, insbesondere C, wurde dies mit "Pragma" (no 't') abgekürzt.

Eine häufige Verwendung von Pragmaten in ALGOL 68 ist die Angabe eines Stripping- Regimes, dh "wie Schlüsselwörter angezeigt werden". Es folgen verschiedene derartige Richtlinien, in denen die Regime POINT, UPPER, RES (reserviert) oder Anführungszeichen angegeben sind. Beachten Sie die Verwendung von Stropping für das Pragmat- Schlüsselwort selbst (abgekürzt pr ), entweder im POINT- oder im Anführungszeichenregime:

.PR POINT .PR
.PR UPPER .PR
.PR RES .PR
'pr' quote 'pr'

Heutzutage sind Direktiven am bekanntesten in der C-Sprache des Jahrgangs der frühen 1970er Jahre und werden durch den aktuellen C99- Standard fortgesetzt , wo sie entweder Anweisungen an den C-Präprozessor oder in Form von #pragma Direktiven an den Compiler selbst sind. In gewissem Maße werden sie auch in moderneren Sprachen verwendet. siehe unten.

Andere Sprachen

  • In Ada werden Compiler-Direktiven Pragmas genannt (kurz für "pragmatische Informationen").
  • In Common Lisp werden Direktiven als Deklarationen bezeichnet und mit dem declare Konstrukt (auch proclaim oder declaim ) angegeben. Mit einer Ausnahme sind Deklarationen optional und haben keinen Einfluss auf die Semantik des Programms. Die einzige Ausnahme ist special , welche gegebenenfalls angegeben werden muss.
  • In Turbo Pascal , werden Richtlinien genannt erhebliche Kommentare , weil in der Sprache Grammatik sie die gleiche Syntax wie folgt Kommentare . In Turbo Pascal ist ein wichtiger Kommentar ein Kommentar, dessen erstes Zeichen ein Dollarzeichen und dessen zweites Zeichen ein Buchstabe ist. Das Äquivalent der C- #include "file" Direktive ist beispielsweise der signifikante Kommentar {$I "file"} .
  • In Perl kann das Schlüsselwort " use ", das Module importiert, auch verwendet werden, um Anweisungen wie use strict; oder anzugeben use utf8; .
  • Haskell- Pragmas werden unter Verwendung einer speziellen Kommentarsyntax spezifiziert, z {-# INLINE foo #-} .
  • Python verfügt über zwei Anweisungen from __future__ import feature (definiert in PEP 236 - Zurück zur __future__ ), die die Sprachfunktionen ändern (und die vorhandene Modulimportsyntax wie in Perl verwenden), und die coding Anweisung (in einem Kommentar), um die Codierung von a anzugeben Quellcodedatei (definiert in PEP 263 - Definieren von Python-Quellcode-Codierungen ). Eine allgemeinere Richtlinienerklärung wurde in PEP 244 - Die "Richtlinienerklärung" vorgeschlagen und abgelehnt . diese alle stammen aus dem Jahr 2001.
  • ECMAScript übernimmt auch die use Syntax für Direktiven, mit dem Unterschied, dass Pragmas als Zeichenfolgenliterale (z. B. "use strict"; oder "use asm"; ) und nicht als Funktionsaufruf deklariert werden .
  • In Visual Basic wird das Schlüsselwort " Option " für Direktiven verwendet:
    • Option Explicit On|Off - Wenn diese Option die implizite Deklaration von Variablen bei der ersten Verwendung nicht zulässt, ist zuvor eine explizite Deklaration erforderlich.
    • Option Compare Binary - Ergebnisse zu Zeichenfolgenvergleichen basierend auf einer Sortierreihenfolge, die aus den internen binären Darstellungen der Zeichen abgeleitet wird - z. B. für die englisch / europäische Codepage (ANSI 1252) A <B <E <Z <a <b <e <z <À < Ê <Ø <à <ê <ø. Beeinflusst intrinsische Operatoren (z. B. =, <>, <,>), den Select Case-Block und die Zeichenfolgenfunktionen der VB-Laufzeitbibliothek (z. B. InStr).
    • Option Compare Text - Führt zu Zeichenfolgenvergleichen basierend auf einer Textsortierreihenfolge ohne Berücksichtigung der Groß- und Kleinschreibung, die vom Gebietsschema Ihres Systems bestimmt wird - z. B. für die englisch / europäische Codepage (ANSI 1252) (A = a) <(À = à) <(B = b) < (E = e) <(Ê = ê) <(Z = z) <(Ø = ø). Beeinflusst intrinsische Operatoren (z. B. =, <>, <,>), den Select Case-Block und die Zeichenfolgenfunktionen der VB-Laufzeitbibliothek (z. B. InStr).
    • Option Strict On|Off - Wenn nicht erlaubt:
      • Typlose Programmierung - Hier werden Deklarationen, denen ein expliziter Typ fehlt, implizit als Objekt eingegeben.
      • späte Bindung (dh dynamischer Versand an CLR-, DLR- und COM-Objekte) an Werte, die statisch als Objekt eingegeben wurden.
      • Implizite Verengungskonvertierungen - Alle Konvertierungen in engere Typen (z. B. von Long in Integer, Object in String, Control in TextBox) müssen mithilfe von Konvertierungsoperatoren (z. B. CInt, DirectCast, CType) im Code explizit angegeben werden.
    • Option Infer On|Off - Wenn diese Option aktiviert ist, kann der Compiler den Typ der lokalen Variablen aus ihren Initialisierern ableiten.
  • In Ruby werden Interpreter-Direktiven als Pragmas bezeichnet und durch Kommentare am Anfang der Datei angegeben, die auf eine key: value Notation folgen . Gibt beispielsweise an, coding: UTF-8 dass die Datei über die UTF-8- Zeichencodierung codiert ist .
  • In C # werden Compiler-Direktiven als Vorverarbeitungs-Direktiven bezeichnet. Es gibt eine Reihe verschiedener Compiler-Anweisungen, einschließlich #pragma, das speziell zur Steuerung von Compiler-Warnungen und Debugger-Prüfsummen verwendet wird.
  • Das SQLite- DBMS enthält eine PRAGMA-Direktive, mit der Befehle eingeführt werden, die nicht mit anderen DBMS kompatibel sind.

Assemblersprache

  • In der Assemblersprache geben Anweisungen, die auch als Pseudooperationen oder "Pseudooperationen" bezeichnet werden, im Allgemeinen Informationen wie den Zielcomputer an, markieren Trennungen zwischen Codeabschnitten, rufen Makros auf, definieren reservierte Speicherbereiche usw. Assembler verwenden eine bestimmte Syntax, um Pseudo-Ops von Befehls-Mnemoniken zu unterscheiden, z. B. indem sie dem Pseudo-Op einen Punkt voranstellen, z. B. dem Pseudo-Op .END , der den Assembler möglicherweise anweist , das Zusammenstellen von Code zu beenden.

PL / SQL

Siehe auch

Verweise

Externe Links