Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kompilator generuje następujące błędy dotyczące nieprawidłowego użycia dyrektyw preprocesora:
- CS1024: Oczekiwana dyrektywa preprocesora
- CS1025: Oczekiwano komentarza jednowierszowego lub końca wiersza
- CS1027: oczekuje się dyrektywy #endif
- CS1028: Nieoczekiwana dyrektywa preprocesora
- CS1029: #error: "text"
- CS1030: #warning: "text"
- CS1032: Nie można zdefiniować/oddefiniować symboli preprocesora po pierwszym elemencie w pliku
- CS1038: oczekiwana dyrektywa #endregion
- CS1040: Dyrektywy preprocesora muszą być wyświetlane jako pierwszy znak inny niż biały znak w wierszu
- CS1517: Nieprawidłowe wyrażenie preprocesora
- CS1560: Nieprawidłowa nazwa pliku określona dla dyrektywy preprocesora. Nazwa pliku jest za długa lub nieprawidłowa nazwa pliku
- CS1576: Brak numeru wiersza określonego dla dyrektywy #line lub jest on nieprawidłowy
- CS1578: Nazwa pliku, komentarz jednowierszowy lub oczekiwany koniec wiersza
- CS1633: Nierozpoznana dyrektywa #pragma
- CS1634: Oczekiwano wyłączenia lub przywrócenia
- CS1635: Nie można przywrócić ostrzeżenia "kod ostrzegawczy", ponieważ został on wyłączony globalnie
- CS1691: "liczba" nie jest prawidłowym numerem ostrzeżenia
- CS1692: Nieprawidłowa liczba
- CS1694: Nieprawidłowa nazwa pliku określona dla dyrektywy preprocesora. Nazwa pliku jest za długa lub nieprawidłowa nazwa pliku
- CS1695: Nieprawidłowa składnia #pragma checksum; powinna być #pragma checksum "nazwa pliku" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1696: Oczekiwano komentarza jednowierszowego lub końca wiersza
- CS1709: Nazwa pliku określona dla dyrektywy preprocesora jest pusta
- CS7009: Nie można użyć #r po pierwszym tokenie w pliku
- CS7010: Oczekiwano nazwy pliku w cudzysłowie
- CS7011: #r jest dozwolona tylko w skryptach
- CS8097: #load jest dozwolona tylko w skryptach
- CS8098: Nie można użyć #load po pierwszym tokenie w pliku
- CS8938: Brak wartości dyrektywy #line lub poza zakresem
- CS8939: Pozycja końcowa dyrektywy #line musi być większa lub równa pozycji początkowej
- CS8996: Surowe literały łańcuchowe nie można używać w dyrektywach preprocesora
- CS9028: Dyrektywa #line span wymaga spacji przed pierwszym nawiasem, przed przesunięciem znaku i przed nazwą pliku
-
CS9297:
#:dyrektywy nie mogą znajdować się po pierwszym tokenie w pliku -
CS9298:
#:dyrektywy mogą być używane tylko w programach opartych na plikach (-features:FileBasedProgram) -
CS9299: Nie można używać
#:dyrektyw po#ifdyrektywie -
CS9314:
#!dyrektywy mogą być używane tylko w skryptach lub programach opartych na plikach
Nieprawidłowa składnia dyrektywy preprocesora
- CS1024: Oczekiwana dyrektywa preprocesora
- CS1025: Oczekiwano komentarza jednowierszowego lub końca wiersza
- CS1027: oczekiwana dyrektywa #endif
- CS1028: Nieoczekiwana dyrektywa preprocesora
- CS1038: oczekiwana dyrektywa #endregion
- CS1040: Dyrektywy preprocesora muszą być wyświetlane jako pierwszy znak inny niż biały znak w wierszu
- CS1517: Nieprawidłowe wyrażenie preprocesora
- CS1633: Nierozpoznana dyrektywa #pragma
- CS1696: Oczekiwano komentarza jednowierszowego lub końca wiersza
- CS8996: Dosłowne literały łańcuchowe nie wolno używać w dyrektywach preprocesora
Te błędy wskazują, że użyto nieprawidłowej składni dla dyrektyw preprocesora. Typowe przyczyny:
- Używanie nierozpoznanej dyrektywy po
#(CS1024, CS1633). - Uwzględniając komentarze wielowierszowe w wierszach dyrektyw (CS1025, CS1696).
- Używanie dyrektyw w nieoczekiwanych lokalizacjach (CS1028).
- Brak wymaganych dyrektyw dopasowania (CS1027, CS1038).
- Nie zdefiniowanie lub niezdefiniowanie symboli jako pierwszego tokenu w pliku (CS1032)
- Nie umieszczaj dyrektywy jako pierwszego tokenu w wierszu (CS1040).
- Używanie nieprawidłowych wyrażeń w kompilacji warunkowej (CS1517).
- Używanie nieprzetworzonych literałów ciągów w dyrektywach preprocesora (CS8996).
Przykład CS1024 — oczekiwana dyrektywa preprocesora:
#import System // CS1024 - "import" is not a valid directive
Przykład CS1025 — oczekiwany komentarz jednowierszowy lub zakończenie wiersza:
#if true /* hello
*/ // CS1025 - multiline comment not allowed
#endif
Przykład CS1027 — oczekiwana dyrektywa #endif:
#if true // CS1027 - missing #endif
class Test { }
Przykład CS1028 — nieoczekiwana dyrektywa preprocesora:
#endif // CS1028 - no matching #if
Przykład CS1032 — #define i #undef dyrektywy preprocesora muszą pojawić się przed innymi tokenami:
/* Comment */
#define X // CS1032 - directive not first token in file
Przykład CS1038 — oczekiwana dyrektywa #endregion:
#region testing
class Test { }
// CS1038 - missing #endregion
Przykład CS1040 — dyrektywy preprocesora muszą być wyświetlane jako pierwszy znak inny niż biały:
/* Comment */ #define X // CS1040 - directive not first on line
Przykład CS1517 — nieprawidłowe wyrażenie preprocesora:
#if 1 // CS1517 - numeric literals not allowed
#endif
#if ~symbol // CS1517 - bitwise operators not allowed
#endif
Przykład CS1633 — nierozpoznana dyrektywa #pragma:
#pragma unknown // CS1633 - "unknown" is not a valid pragma
Przykład CS8996 — literały ciągu nieprzetworzonego nie są dozwolone w dyrektywach preprocesora:
// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // CS8996
class Test { }
Aby naprawić ten błąd, użyj zwykłego literału ciągu:
#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // OK
class Test { }
Aby naprawić te błędy, upewnij się, że dyrektywy preprocesora są zgodne z poprawnymi regułami składni opisanymi w dokumentacji dyrektyw preprocesora.
Błędy dyrektywy #error i #warning
- CS1029: #error: "text"
- CS1030: #warning: "text"
- CS1634: Oczekiwano wyłączenia lub przywrócenia
- CS1635: Nie można przywrócić ostrzeżenia "kod ostrzeżenia", ponieważ zostało ono wyłączone na poziomie globalnym
- CS1691: "liczba" nie jest prawidłowym numerem ostrzeżenia
- CS1692: Nieprawidłowa liczba
Te błędy występują, gdy kompilator przetwarza dyrektywy #error, #warning, i #pragma warning. Te dyrektywy umożliwiają generowanie niestandardowych komunikatów o błędach i ostrzeżeniach podczas kompilacji oraz zarządzanie zachowaniem ostrzeżeń.
CS1029 wyświetla tekst błędu zdefiniowanego dyrektywą #error :
// CS1029.cs
class Sample
{
static void Main()
{
#error Let's give an error here // CS1029
}
}
Kompilacja generuje następujące dane wyjściowe:
example.cs(9,8): error CS1029: #error: 'Let's give an error here // CS1029 '
CS1030 wyświetla tekst ostrzeżenia zdefiniowanego dyrektywą #warning :
// CS1030.cs
class Sample
{
static void Main()
{
#warning Let's give a warning here
}
}
Kompilacja generuje następujące dane wyjściowe:
example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'
CS1634 występuje, gdy klauzula #pragma warning jest źle sformułowana, na przykład gdy pominięto wyłączenie lub przywracanie.
// CS1634.cs
// compile with: /W:1
#pragma warning // CS1634
// Try this instead:
// #pragma warning disable 0219
class MyClass
{
public static void Main()
{
}
}
CS1635 występuje, gdy używasz /nowarn opcji wiersza polecenia lub ustawienia projektu, aby wyłączyć ostrzeżenie globalnie, ale użyj polecenia #pragma warning restore , aby spróbować przywrócić to ostrzeżenie:
// CS1635.cs
// compile with: /w:1 /nowarn:162
enum MyEnum {one=1,two=2,three=3};
class MyClass
{
public static void Main()
{
#pragma warning disable 162
if (MyEnum.three == MyEnum.two)
System.Console.WriteLine("Duplicate");
#pragma warning restore 162 // CS1635
}
}
CS1691 występuje, gdy podana liczba do dyrektywy #pragma warning nie jest prawidłowym numerem ostrzeżenia.
// CS1691.cs
public class C
{
int i = 1;
public static void Main()
{
C myC = new C();
#pragma warning disable 151 // CS1691
// Try the following line instead:
// #pragma warning disable 1645
myC.i++;
#pragma warning restore 151 // CS1691
// Try the following line instead:
// #pragma warning restore 1645
}
}
CS1692 występuje, gdy liczba dyrektyw preprocesora, takich jak #pragma i #line jest nieprawidłowa, ponieważ jest zbyt duża, w niewłaściwym formacie lub zawiera niedozwolone znaki:
// CS1692.cs
#pragma warning disable a // CS1692
// Try this instead:
// #pragma warning disable 1691
class A
{
static void Main()
{
}
}
Te dyrektywy są przydatne w scenariuszach kompilacji warunkowej, w których deweloperzy chcą otrzymywać alerty dotyczące określonych warunków w kodzie lub kontrolować, które ostrzeżenia są wyświetlane podczas kompilacji. Aby uzyskać więcej informacji na temat używania tych dyrektyw, zobacz dokumentację dyrektyw preprocesora i ostrzeżenie #pragma.
#line i błędy związane z dyrektywami dotyczącymi plików
- CS1560: Nieprawidłowa nazwa pliku określona dla dyrektywy preprocesora. Nazwa pliku jest za długa lub nieprawidłowa nazwa pliku
- CS1576: Brak numeru wiersza określonego dla dyrektywy #line lub jest on nieprawidłowy
- CS1578: Nazwa pliku, komentarz jednowierszowy lub oczekiwany koniec wiersza
- CS1694: Nieprawidłowa nazwa pliku określona dla dyrektywy preprocesora. Nazwa pliku jest za długa lub nieprawidłowa nazwa pliku
- CS1695: Nieprawidłowa składnia sumy kontrolnej #pragma; powinna być #pragma sumy kontrolnej "nazwa pliku" "{XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1709: Nazwa pliku określona dla dyrektywy preprocesora jest pusta
- CS8938: Brak wartości dyrektywy #line lub poza zakresem
- CS8939: Pozycja końcowa dyrektywy #line musi być większa lub równa pozycji początkowej
- CS9028: Dyrektywa #line span wymaga spacji przed pierwszym nawiasem, przed przesunięciem znaku i przed nazwą pliku
Te błędy wskazują na nieprawidłowe użycie #line dyrektywy lub dyrektyw preprocesora związanych z plikami. Typowe przyczyny:
- Nieprawidłowe lub brakujące nazwy plików (CS1560, CS1694, CS1709).
- Niepoprawny format lub wartości numeru wiersza (CS1576, CS8938, CS8939).
- Brak prawidłowej składni nazw plików i komentarzy (CS1578).
- Źle sformułowana składnia
#pragma checksum(CS1695). - Nieprawidłowe odstępy w dyrektywach typu
#linespan (CS9028).
Przykład CS1560/CS1694 — podano nieprawidłową nazwę pliku:
#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt" // CS1560/CS1694 - filename too long
Przykład CS1576 — brak numeru wiersza lub jest on nieprawidłowy:
#line "abc.sc" // CS1576 - missing line number
#line abc "file.cs" // CS1576 - invalid line number format
Przykład CS1578 — oczekiwano nazwy pliku, komentarza lub końca wiersza:
#line 101 abc.cs // CS1578 - filename not quoted
Przykład CS1695 — nieprawidłowa składnia sumy kontrolnej #pragma:
#pragma checksum "12345" // CS1695 - missing GUID and checksum
Przykład CS1709 — pusta nazwa pliku:
#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "" // CS1709 - empty filename
Przykład CS8938 — brak wartości dyrektywy #line lub poza zakresem:
#line // CS8938 - missing value
#line 0 // CS8938 - out of range (must be 1-16,707,566)
Przykład CS8939 — błąd przy końcowej pozycji dyrektywy #line:
#line (1, 10) - (1, 5) "file.cs" // CS8939 - end column < start column
Przykład CS9028 — #line odstępy między dyrektywami:
#line(1, 1) - (1, 10)"file.cs" // CS9028 - missing spaces
Aby naprawić te błędy, upewnij się, że #line dyrektywy i dyrektywy preprocesora związane z plikami są zgodne z poprawną składnią zgodnie z opisem w dokumentacji dyrektyw preprocesora.
Nieprawidłowe użycie dyrektyw aplikacji opartych na plikach
-
CS9297:
#:dyrektywy nie mogą znajdować się za pierwszym tokenem w pliku -
CS9298:
#:dyrektywy mogą być używane tylko w programach opartych na plikach (-features:FileBasedProgram) -
CS9299:
#:dyrektywy nie mogą być po#ifdyrektywie -
CS9314:
#!dyrektywy mogą być używane tylko w skryptach lub programach opartych na plikach
Te błędy wskazują, że niepoprawnie użyto dyrektyw #: dla aplikacji plikowej. Więcej informacji na temat składni tych dyrektyw można dowiedzieć się w artykule dotyczącym dyrektyw preprocesora w sekcji dotyczącej aplikacji opartych na plikach. Możesz też eksplorować aplikacje oparte na plikach, wykonując czynności opisane w samouczku dotyczącym aplikacji opartych na plikach.
Plik zawiera dyrektywy script.cs
Następujące błędy wskazują na składnię script.cs w skompilowanym pliku C#:
- CS7009: Nie można użyć #r po pierwszym tokenie w pliku
- CS7010: Oczekiwano nazwy pliku w cudzysłowie
- CS7011: #r jest dozwolona tylko w skryptach
- CS8097: #load jest dozwolona tylko w skryptach
Te dyrektywy nie są obsługiwane w skompilowanym języku C#. Należy je usunąć lub użyć script.cs.