Einführung in die Präprozessor-Direktiven in C

Meistens wird die falsche Annahme gemacht, dass Präprozessoren oder Makros Teil der Kompilierung des Programms sind, aber es ist völlig falsch. Präprozessor-Direktiven sind die Art von Makros und eine Phase vor dem Kompilieren. Es kann gesagt werden, dass dies eine Reihe von Anweisungen sind, die dem Compiler gegeben werden, um die eigentliche Kompilierung durchzuführen. Sie werden auch als längere Konstruktionsabkürzungen für Makros bezeichnet. Dies bedeutet, dass der Wert in Makros durch das Codesegment ersetzt wird. Makro wird durch ein spezielles Symbol definiert und hat ein Symbol, das mit "#" beginnt. Daher ist # define eine Art spezieller Präprozessor, dem der eigentliche Compiler folgt. In diesem Thema lernen wir die Präprozessor-Direktiven in C kennen.

Der Präprozessor verfügt zu seiner Identifizierung über eine spezielle Darstellungsart, wie jede Präprozessoranweisung sich selbst durch ein spezielles Symbol von "#", gefolgt von einem Bezeichner und dem Namen der Anweisung einleitet. Leerzeichen sind auch vor und nach dem # zulässig. Zum Beispiel # include.

Es gibt bestimmte Anpassungen oder Funktionen, die ein C-Präprozessor bereitstellen kann:

  • Header-Dateien: Die Einbeziehung von Header-Dateien ist eine Möglichkeit, Deklarationen durch Programmsyntax und Programmrumpf zu ersetzen.
  • Erweitern von Makros: Das Definieren von Makros entspricht dem Abkürzen eines Codeteils, den ein C-Präprozessor durch die jeweilige Definition ersetzt.
  • Zusammenstellung nach Bedingungen: Abhängig von verschiedenen Szenarien oder Bedingungen ist die Einbeziehung bestimmter Teile des Programms durch bedingte Zusammenstellung möglich.
  • Zeilensteuerung: Wenn Sie ein Programm verwenden, um eine oder mehrere Quelldateien zu einer Zwischendatei für die Kompilierung zu kombinieren oder neu anzuordnen, können Sie mit der Zeilensteuerung den Compiler darüber informieren, woher die einzelnen Quellzeilen stammen.

Arten von Präprozessor-Direktiven

Alle Arten von Präprozessor-Direktiven lauten wie folgt:

  1. # definieren
  2. # include
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # wenn
  7. #sonst
  8. #elif
  9. #endif
  10. #Error
  11. #pragma

1. #define (Makros)

Ein Makro ist ein Code-Snippet, das durch einen bestimmten Wert des Makro-Codes ersetzt wird. Jedes Makro wird hauptsächlich durch seine Direktive #define beschrieben und definiert.

Syntax:

#define token value

Es gibt zwei Arten von Makros:

  • Funktionsähnliche Makros
  • Objektartige Makros
Funktionsähnliche Makros

Die Funktion like-macro funktioniert fast wie ein Funktionsaufruf.

Beispielsweise:

#define MAX(a, b) ((a)>(b) ? (a): (b))

MAX hier ist der Makroname.

Beispiel:

Ausgabe:

Objektartige Makros

Objektartige Makros sind die Art von Bezeichnern, die durch Werte ersetzt werden. Es wird hauptsächlich zur Darstellung numerischer Konstanten verwendet.

#define PI 3.1415

Hier wird der Wert von PI durch das Makro ersetzt.


Ausgabe:

2. #include

Es gibt einige andere Funktionen für die Include-Präprozessor-Direktive. Es gibt drei eigene Varianten, die den Code durch den aktuellen Quellcode ersetzen.

Drei Varianten sind wie folgt:

  • #umfassen
  • #include ”file”
  • Fügen Sie noch etwas hinzu

#umfassen

Sucht nach einer Datei in der definierten Liste des Systems oder der angegebenen Verzeichnisse und sucht dann nach einer Standardliste der Systembibliotheken.

#include ”file”

Dieser Typ wird für Ihre eigenen angepassten Header-Dateien des Programms verwendet. Es wird zuerst im aktuellen Verzeichnis nach einer Datei mit dem Namen file gesucht, gefolgt von den System-Header-Dateien und den aktuellen Verzeichnissen des aktuellen Verzeichnisses file.

#include alles

Dieser Typ der Include-Präprozessor-Direktive wird verwendet, wenn keiner der anderen beiden Typen der Direktive und deren Argumente nicht zur Berechnungsstruktur passen und diese erfüllen.

3. #Ifdef

Überprüft, ob das Makro durch # define definiert ist oder nicht. Wenn ja, wird der Code ausgeführt, andernfalls nicht.

Syntax:

#ifdef MACRO
(
Code body
)
#endif
#undef:

Das Abbrechen der Definition eines Makros bedeutet, dass es undefiniert ist und der Direktive #undef vorangestellt ist.

Syntax:

#undef token

Ausgabe:

4. Ifndef

Dieser Prozessor prüft, ob #define durch #define definiert ist oder nicht. Wenn ja, wird der Code ausgeführt.

Syntax:

#Ifndef MACRO
//code
#endif
#If

Dieser Prozessor funktioniert nur wie eine if-Schleife und wertet den Ausdruck oder die Bedingung aus. Wenn die Bedingung wahr ist, wird der Code ausgeführt, andernfalls nicht.

Syntax:

#if expression
//code
#endif
#else

Die Präprozessoranweisung #else wird verwendet, um den Ausdruck oder die Bedingung auszuwerten, wenn die Bedingung von #if falsch ist. Es kann mit den Direktiven #if, #elif, #ifdef und #ifndef verwendet werden.

Syntax:

#if expression
//if body
#else
//else body
#endif

Beispiel:

Ausgabe:

5. #Fehler

Wie der Name vermuten lässt, wird die Error-Präprozessor-Direktive verwendet, um einen Fehler anzuzeigen. Wenn die Error-Direktive gefunden wird, gibt der Compiler einen schwerwiegenden Fehler aus und überspringt die nächsten Kompilierungsschritte.

Ausgabe:

6. #pragma

Dies hängt vom Compiler ab, da verschiedene Betriebssysteme und verschiedene Computer alle Arten von Betriebssystemfunktionen bereitstellen, die vom Compiler verwendet werden, um dem Compiler zusätzliche Informationen bereitzustellen.

Syntax:

#pragma token

Beispiel:

Ausgabe:

Jeder Präprozessor hat seine eigene Bedeutung, da mit der bedingten Anweisung geprüft wird, ob ein Teil des Programms auf der Grundlage von Szenarien berücksichtigt werden soll oder nicht.

Angenommen, ein Programm möchte in einer bestimmten Umgebung mit der spezifischen Konfiguration des Betriebssystems kompiliert werden. Sobald es jedoch diese Kompilierungsphase erreicht, wird ein Fehler ausgegeben, oder es wird ein ungültiger Code angegeben, der dem Programm lediglich die Möglichkeit einer großen Zahl gibt um das Programm zu verknüpfen und während der Ausführung auszuführen. Es kann auch eine andere Möglichkeit geben, bei der dieselbe Quelldatei mit zwei verschiedenen Programmen eine zeitaufwendige Konsistenzprüfung oder deren unmittelbare Daten durchführt oder die Datenwerte beim Debuggen druckt.

Diese mit der Berechnung zu erstellenden Szenarien können auch verwendet werden, um unter Verwendung von Vorverarbeitungsdirektiven auf einem Computer ausgeführt zu werden.

Fazit

Die Ausgabe des C-Präprozessors ähnelt stark der Eingabe, mit der Ausnahme, dass alle Vorverarbeitungsdirektiven durch Leerzeilen oder Leerzeichen ersetzt wurden. Unterschiedliche Dateien und Formate haben unterschiedliche Syntaxen, die angeben, dass der Start einer neuen Datei erfolgt ist oder dass vor dem Kompilieren eine Rückkehr zu einer Datei oder eine Verarbeitung erfolgen soll.

Alle Szenarien werden verwendet, um andere über die Leistung des C-Präprozessors und dessen Entwicklung mit verschiedenen Versionen des Compilers zu informieren, die mit GCC- und ANSI-Standards gestartet wurden.

Empfohlene Artikel

Dies ist eine Anleitung zu Präprozessor-Direktiven in C. Hier werden die Typen von Präprozessor-Direktiven mit Syntax und Beispielen erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.

  1. Reverse Number in C
  2. Sortierung in C
  3. Hashing-Funktion in C
  4. Fortsetzen der Anweisung in C
  5. Sortierung in C #
  6. Wie funktioniert Hashing in PHP?