Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# Präprozessor-Direktiven: Bedingte Kompilierung steuern

Präprozessor-Direktiven

Anweisungen an den Compiler, die vor** der eigentlichen Kompilierung verarbeitet werden. Beginnen mit #, enden nicht mit Semikolon. In C# gibt es keinen separaten Präprozessor; die Direktiven werden vom Compiler ausgewertet.

Übersicht der Direktiven

DirektiveBeschreibung
#define SYMBOLDefiniert ein bedingtes Kompilierungssymbol.
#undef SYMBOLEntfernt eine Symbol-Definition.
#if SYMBOLStartet bedingten Block (wahr wenn Symbol definiert).
#elif SYMBOLAlternative Bedingung innerhalb von #if.
#elseElse-Zweig für #if.
#endifBeendet bedingten Block.
#warning "Text"Erzeugt Compiler-Warnung.
#error "Text"Erzeugt Compiler-Fehler (Build bricht ab).
#line 100 "file.cs"Setzt Zeilennummer/Dateiname für Fehlermeldungen.
#region NameStartet einklappbaren Code-Bereich (IDE).
#endregionBeendet #region.

Bedingte Kompilierung

#define DEBUG
#define VC_V10

using System;

public class Test
{
    static void Main()
    {
#if (DEBUG && !VC_V10)
        Console.WriteLine("DEBUG only");
#elif (!DEBUG && VC_V10)
        Console.WriteLine("VC_V10 only");
#elif (DEBUG && VC_V10)
        Console.WriteLine("DEBUG and VC_V10 defined");
#else
        Console.WriteLine("Neither defined");
#endif
        Console.ReadKey();
    }
}

Ausgabe: DEBUG and VC_V10 defined

Operatoren in #if/#elif

  • ==, != (Gleichheit/Ungleichheit von Symbolen)
  • && (UND), || (ODER)
  • ! (NICHT)
  • Klammern zur Gruppierung erlaubt.

Typische Verwendungsszenarien

  • Debug/Release-Builds: #if DEBUG … Logging, Asserts.
  • Plattformspezifischer Code: #if NETFRAMEWORK / #if NETCOREAPP.
  • Feature-Flags: #if FEATURE_X.
  • Code-Generierung/Metaprogrammierung: #line für generierte Dateien.

#region / #endregion

Nur für Editor-Support (Visual Studio, VS Code, Rider). Keine Auswirkung auf Kompilierung.

#region Public Methods
public void Method1() { }
public void Method2() { }
#endregion

#region Private Helpers
private void Helper() { }
#endregion

Wichtige Hinweise

  • Symbole sind pro Datei (oder Projektweit über Projekt-Einstellungen / <DefineConstants> in .csproj).
  • Keine Makros wie in C/C++ (keine Textsubstitution mit Parametern).
  • #define muss vor allem anderen Code in der Datei stehen.

C Sprache

  1. C# Hello World – Ihre erste C#-Anwendung erstellen
  2. C# Keywords und Identifiers verstehen: Regeln, Listen und Best Practices
  3. C# Variablen & Primitive Datentypen meistern: Der komplette Guide
  4. C# Operatoren – Umfassender Leitfaden zu Operatoren in C#
  5. C# Bitweise und Bit-Shift-Operatoren meistern: Umfassender Leitfaden
  6. C# Grundlagen: Eingabe und Ausgabe Essentials
  7. C# Ausdrücke, Anweisungen & Blöcke: Umfassender Leitfaden mit Beispielen
  8. C# Kommentare meistern: Arten, Best Practices und XML-Dokumentation
  9. C# Switch Statement meistern: Syntax, Beispiele & Best Practices
  10. C# Ternärer Operator: Knapper Leitfaden zu bedingten Ausdrücken