C # - Präprozessoranweisungen

Die Präprozessoranweisungen geben dem Compiler die Anweisung, die Informationen vor dem eigentlichen Kompilieren vorzuverarbeiten.

Alle Präprozessoranweisungen beginnen mit #, und vor einer Präprozessoranweisung in einer Zeile dürfen nur Leerzeichen stehen. Präprozessor-Direktiven sind keine Anweisungen, daher enden sie nicht mit einem Semikolon (;).

Der C # -Compiler verfügt nicht über einen separaten Präprozessor. Die Anweisungen werden jedoch so verarbeitet, als ob es eine gäbe. In C # werden die Präprozessoranweisungen verwendet, um bei der bedingten Kompilierung zu helfen. Im Gegensatz zu C- und C ++ - Direktiven werden sie nicht zum Erstellen von Makros verwendet. Eine Präprozessoranweisung muss die einzige Anweisung in einer Zeile sein.

Präprozessor-Direktiven in C #

In der folgenden Tabelle sind die in C # verfügbaren Präprozessoranweisungen aufgeführt.

Sr.Nr. Präprozessor-Richtlinie & Beschreibung
1

#define

Es definiert eine Folge von Zeichen, die als Symbol bezeichnet wird.

2

#undef

Hier können Sie ein Symbol aufheben.

3

#if

Es ermöglicht das Testen eines Symbols oder von Symbolen, um festzustellen, ob sie als wahr ausgewertet werden.

4

#else

Es ermöglicht das Erstellen einer zusammengesetzten bedingten Direktive zusammen mit #if.

5

#elif

Es ermöglicht das Erstellen einer zusammengesetzten bedingten Direktive.

6

#endif

Gibt das Ende einer bedingten Direktive an.

7

#line

Hiermit können Sie die Zeilennummer des Compilers und (optional) den Dateinamen für Fehler und Warnungen ändern.

8

#error

Es ermöglicht das Generieren eines Fehlers an einer bestimmten Stelle in Ihrem Code.

9

#warning

Es ermöglicht das Generieren einer Warnung der Stufe 1 von einem bestimmten Ort in Ihrem Code.

10

#region

Hier können Sie einen Codeblock angeben, den Sie mit der Gliederungsfunktion des Visual Studio-Code-Editors erweitern oder reduzieren können.

11

#endregion

Es markiert das Ende eines # region-Blocks.

Der Präprozessor #define

Die Präprozessor-Direktive #define erstellt symbolische Konstanten.

Mit #define können Sie ein Symbol so definieren, dass der Ausdruck unter Verwendung des Symbols als Ausdruck, der an die Direktive #if übergeben wird, als wahr ausgewertet wird. Die Syntax lautet wie folgt:

#define symbol

Das folgende Programm veranschaulicht dies -

#define PI 
using System;

namespace PreprocessorDAppl {
   class Program {
      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

PI is defined

Bedingte Richtlinien

Mit der Direktive #if können Sie eine bedingte Direktive erstellen. Bedingte Anweisungen sind nützlich, um ein oder mehrere Symbole zu testen und zu überprüfen, ob sie als wahr ausgewertet werden. Wenn sie als wahr ausgewertet werden, wertet der Compiler den gesamten Code zwischen #if und der nächsten Anweisung aus.

Die Syntax für die bedingte Direktive lautet -

#if symbol [operator symbol]...

Wobei Symbol der Name des Symbols ist, das Sie testen möchten. Sie können auch true und false verwenden oder dem Symbol den Negationsoperator voranstellen.

Das Operatorsymbol ist der Operator, der zur Auswertung des Symbols verwendet wird. Betreiber können eine der folgenden sein:

  • == (Gleichheit)
  • ! = (Ungleichung)
  • && (und)
  • || (oder)

Sie können Symbole und Operatoren auch in Klammern gruppieren. Bedingte Anweisungen werden zum Kompilieren von Code für einen Debug-Build oder beim Kompilieren für eine bestimmte Konfiguration verwendet. Eine bedingte Direktive, die mit a beginnt#if Direktive muss explizit mit a beendet werden #endif Richtlinie.

Das folgende Programm demonstriert die Verwendung von bedingten Anweisungen -

#define DEBUG
#define VC_V10
using System;

public class TestClass {
   public static void Main() {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG and VC_V10 are defined");
      #else
         Console.WriteLine("DEBUG and VC_V10 are not defined");
      #endif
      Console.ReadKey();
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

DEBUG and VC_V10 are defined