C # - dyrektywy preprocesora
Dyrektywy preprocesora przekazują kompilatorowi instrukcje, aby wstępnie przetworzył informacje przed rozpoczęciem właściwej kompilacji.
Wszystkie dyrektywy preprocesora zaczynają się od #, a przed dyrektywą preprocesora w wierszu mogą pojawić się tylko znaki odstępu. Dyrektywy preprocesora nie są instrukcjami, więc nie kończą się średnikiem (;).
Kompilator C # nie ma oddzielnego preprocesora; jednakże dyrektywy są przetwarzane tak, jakby istniała. W języku C # dyrektywy preprocesora są używane do pomocy w kompilacji warunkowej. W przeciwieństwie do dyrektyw C i C ++ nie są one używane do tworzenia makr. Dyrektywa preprocesora musi być jedyną instrukcją w linii.
Dyrektywy preprocesora w C #
W poniższej tabeli wymieniono dyrektywy preprocesora dostępne w języku C # -
Sr.No. | Dyrektywa i opis preprocesora |
---|---|
1 | #define Definiuje sekwencję znaków, zwaną symbolem. |
2 | #undef Pozwala na cofnięcie definicji symbolu. |
3 | #if Pozwala przetestować symbol lub symbole, aby sprawdzić, czy są one prawdziwe. |
4 | #else Pozwala stworzyć złożoną dyrektywę warunkową wraz z #if. |
5 | #elif Pozwala na stworzenie złożonej dyrektywy warunkowej. |
6 | #endif Określa koniec dyrektywy warunkowej. |
7 | #line Umożliwia modyfikację numeru wiersza kompilatora i (opcjonalnie) nazwy pliku wyjściowego dla błędów i ostrzeżeń. |
8 | #error Pozwala wygenerować błąd z określonej lokalizacji w kodzie. |
9 | #warning Umożliwia generowanie ostrzeżenia poziomu pierwszego z określonej lokalizacji w kodzie. |
10 | #region Umożliwia określenie bloku kodu, który można rozwinąć lub zwinąć podczas korzystania z funkcji konspektu Edytora kodu programu Visual Studio. |
11 | #endregion Oznacza koniec bloku #region. |
#Define Preprocessor
Dyrektywa #define preprocesora tworzy symboliczne stałe.
#define umożliwia zdefiniowanie symbolu w taki sposób, że używając tego symbolu jako wyrażenia przekazanego do dyrektywy #if, wyrażenie przyjmuje wartość true. Jego składnia jest następująca -
#define symbol
Poniższy program ilustruje to -
#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();
}
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
PI is defined
Dyrektywy warunkowe
Możesz użyć dyrektywy #if, aby utworzyć dyrektywę warunkową. Dyrektywy warunkowe są przydatne do testowania symbolu lub symboli w celu sprawdzenia, czy są one prawdziwe. Jeśli tak się stanie, kompilator oceni cały kod między #if a następną dyrektywą.
Składnia dyrektywy warunkowej to -
#if symbol [operator symbol]...
Gdzie symbol to nazwa symbolu, który chcesz przetestować. Możesz także użyć prawdy i fałszu lub poprzedzić symbol operatorem negacji.
Symbolu operatora jest stosowane do oceny operatora symbol. Operatory mogą być jednym z następujących:
- == (równość)
- ! = (nierówność)
- && (i)
- || (lub)
Możesz także grupować symbole i operatory za pomocą nawiasów. Dyrektywy warunkowe są używane do kompilowania kodu dla kompilacji debugowania lub podczas kompilowania dla określonej konfiguracji. Dyrektywa warunkowa rozpoczynająca się od#if dyrektywa musi być wyraźnie zakończona rozszerzeniem #endif dyrektywa.
Poniższy program demonstruje użycie dyrektyw warunkowych -
#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();
}
}
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
DEBUG and VC_V10 are defined