Bagikan melalui


Kesalahan dan peringatan pra-prosesor

Pengkompilasi menghasilkan kesalahan berikut untuk penggunaan direktif praprosesor yang salah:

  • CS1024: Pengarahan pra-pemroses diharapkan
  • CS1025: Komentar baris tunggal atau akhir baris yang diharapkan
  • CS1027: direktif #endif diperlukan
  • CS1028: Direktif praprosesor tak terduga
  • CS1029: #error: 'text'
  • CS1030: #warning: 'text'
  • CS1032: Tidak dapat menentukan/membatalkan definisi simbol prapemrosedur setelah token pertama dalam file
  • CS1038: diharapkan adanya direktif #endregion
  • CS1040: Arahan pra-prosesor harus muncul sebagai karakter non-spasi-putih pertama pada baris
  • CS1517: Ekspresi pra-prosesor tidak valid
  • CS1560: Nama file tidak valid yang ditentukan untuk arahan preprocessor. Nama file terlalu panjang atau bukan nama file yang valid
  • CS1576: Nomor baris yang ditentukan untuk direktif #line hilang atau tidak valid
  • CS1578: Nama file, komentar baris tunggal, atau akhir baris yang diharapkan
  • CS1633: Direktif #pragma tidak dikenal
  • CS1634: Penonaktifan atau pemulihan yang diharapkan
  • CS1635: Tidak dapat memulihkan peringatan 'kode peringatan' karena dinonaktifkan secara global
  • CS1691: 'number' bukan kode peringatan yang valid
  • CS1692: Nomor tidak valid
  • CS1694: Nama file tidak valid yang ditentukan untuk arahan preprocessor. Nama file terlalu panjang atau bukan nama file yang valid
  • CS1695: Sintaks checksum #pragma tidak valid; harus #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX}" "XXXX..."
  • CS1696: Komentar baris tunggal atau akhir baris yang diharapkan
  • CS1709: Nama file yang ditentukan untuk arahan preprocessor kosong
  • CS7009: Tidak dapat menggunakan #r setelah token pertama dalam file
  • CS7010: Nama file yang dikutip diharapkan
  • CS7011: #r hanya diizinkan dalam skrip
  • CS8097: #load hanya diizinkan dalam skrip
  • CS8098: Tidak dapat menggunakan #load setelah token pertama dalam file
  • CS8938: Nilai direktif #line tidak ada atau di luar rentang
  • CS8939: Posisi akhir arahan #line harus lebih besar dari atau sama dengan posisi awal
  • CS8996: Literal string mentah tidak diizinkan dalam direktif prapemrosan
  • CS9028: Direktif #line span memerlukan spasi sebelum tanda kurung pertama, sebelum offset karakter, dan sebelum nama file
  • CS9297: #: direktif tidak boleh berada setelah token pertama dalam file
  • CS9298: #: arahan hanya dapat digunakan dalam program berbasis file (-features:FileBasedProgram)
  • CS9299: arahan #: tidak boleh setelah arahan #if
  • CS9314: #! arahan hanya dapat digunakan dalam skrip atau program berbasis file

Sintaks direktif praprosesor tidak valid

  • CS1024: Direktif pra-prosesor diharapkan
  • CS1025: Komentar baris tunggal atau akhir baris yang diharapkan
  • CS1027: direktif #endif sedang diharapkan
  • CS1028: Direktif praprosesor tak terduga
  • CS1038: direktif #endregion diharapkan
  • CS1040: Arahan pra-prosesor harus muncul sebagai karakter non-spasi-putih pertama pada baris
  • CS1517: Ekspresi pra-prosesor tidak valid
  • CS1633: Direktif #pragma tidak teridentifikasi
  • CS1696: Komentar baris tunggal atau akhir baris yang diharapkan
  • CS8996: Literal string mentah tidak diizinkan dalam direktif prapemrosan

Kesalahan ini menunjukkan bahwa Anda menggunakan sintaksis yang tidak valid untuk direktif praproscessor. Penyebab umumnya meliputi:

  • Menggunakan arahan yang tidak dikenal setelah # (CS1024, CS1633).
  • Termasuk komentar multibaris pada garis direktif (CS1025, CS1696).
  • Menggunakan arahan di lokasi yang tidak terduga (CS1028).
  • Tidak ada arahan pencocokan yang diperlukan (CS1027, CS1038).
  • Tidak menentukan atau membatalkan pendefinisian simbol sebagai token pertama dalam file (CS1032)
  • Tidak menempatkan direktif sebagai token pertama pada baris (CS1040).
  • Menggunakan ekspresi yang tidak valid dalam kompilasi kondisional (CS1517).
  • Menggunakan literal string mentah pada direktif pra-pemroses (CS8996).

Contoh CS1024 - Direktif praprosesor diharapkan:

#import System   // CS1024 - "import" is not a valid directive

Contoh CS1025 - Komentar baris tunggal atau akhir baris yang diharapkan:

#if true /* hello  
*/   // CS1025 - multiline comment not allowed
#endif

Contoh CS1027 - direktif #endif diharapkan:

#if true   // CS1027 - missing #endif
class Test { }

Contoh CS1028 - Direktif praprosesor tidak terduga:

#endif   // CS1028 - no matching #if

Contoh CS1032 - #define dan #undef direktif pra-prosesor harus muncul sebelum token lain:

/* Comment */ 
#define X   // CS1032 - directive not first token in file

Contoh CS1038 - diharapkan adanya direktif #endregion:

#region testing
class Test { }
// CS1038 - missing #endregion

Contoh CS1040 - Direktif pra-prosesor harus muncul sebagai karakter non-spasi putih pertama:

/* Comment */ #define X   // CS1040 - directive not first on line

Contoh CS1517 - Ekspresi praprosesor tidak valid:

#if 1           // CS1517 - numeric literals not allowed
#endif
#if ~symbol     // CS1517 - bitwise operators not allowed  
#endif

Contoh CS1633 - Direktif #pragma tidak dikenali:

#pragma unknown  // CS1633 - "unknown" is not a valid pragma

Contoh CS8996 - Literal string mentah tidak diizinkan dalam direktif prapemrosan:

// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash"  // CS8996
class Test { }

Untuk memperbaiki kesalahan ini, gunakan string reguler literal:

#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash"  // OK
class Test { }

Untuk memperbaiki kesalahan ini, pastikan direktif pra-prosesor Anda mengikuti aturan sintaks yang benar yang dijelaskan dalam dokumentasi direktif praproscessor.

Kesalahan pada arahan #error dan #warning

  • CS1029: #error: 'text'
  • CS1030: #warning: 'text'
  • CS1634: Penonaktifan atau pemulihan yang diharapkan
  • CS1635: Tidak dapat memulihkan peringatan 'kode peringatan' karena dinonaktifkan secara global
  • CS1691: 'number' bukan nomor peringatan yang valid
  • CS1692: Nomor tidak valid

Kesalahan ini terjadi ketika kompilator memproses #error, , #warningdan #pragma warning direktif. Arahan ini memungkinkan Anda menghasilkan pesan kesalahan dan peringatan kustom selama kompilasi dan perilaku peringatan kontrol.

CS1029 menampilkan teks kesalahan yang ditentukan dengan direktif #error :

// CS1029.cs
class Sample
{
   static void Main()
   {
      #error Let's give an error here   // CS1029
   }
}

Kompilasi menghasilkan output berikut:

example.cs(9,8): error CS1029: #error: 'Let's give an error here   // CS1029  '

CS1030 menampilkan teks peringatan yang ditentukan dengan arahan #warning :

// CS1030.cs
class Sample
{
   static void Main()
   {
      #warning Let's give a warning here
   }
}

Kompilasi menghasilkan output berikut:

example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'

CS1634 terjadi ketika #pragma warning klausul terbentuk dengan buruk, seperti ketika nonaktifkan atau pemulihan dihilangkan:

// CS1634.cs
// compile with: /W:1

#pragma warning   // CS1634
// Try this instead:
// #pragma warning disable 0219

class MyClass
{
  public static void Main()
  {
  }
}

CS1635 terjadi ketika Anda menggunakan opsi baris perintah atau pengaturan proyek untuk menonaktifkan peringatan secara global, tetapi gunakan /nowarn untuk mencoba memulihkan peringatan tersebut#pragma warning restore:

// 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 terjadi ketika angka yang diteruskan ke #pragma warning direktif bukan nomor peringatan yang valid:

// 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 terjadi ketika angka dalam arahan prapemroscessor seperti #pragma dan #line tidak valid karena terlalu besar, dalam format yang salah, atau berisi karakter ilegal:

// CS1692.cs

#pragma warning disable a  // CS1692
// Try this instead:
// #pragma warning disable 1691

class A
{
    static void Main()
    {
    }
}

Arahan ini berguna untuk skenario kompilasi kondisional di mana Anda ingin memberi tahu pengembang tentang kondisi tertentu dalam kode, atau mengontrol peringatan mana yang ditampilkan selama kompilasi. Untuk informasi selengkapnya tentang menggunakan arahan ini, lihat dokumentasi arahan prapemrosan dan peringatan #pragma.

#line dan kesalahan direktif file

  • CS1560: Nama file tidak valid yang ditentukan untuk arahan preprocessor. Nama file terlalu panjang atau bukan nama file yang valid
  • CS1576: Nomor baris yang ditentukan untuk direktif #line hilang atau tidak valid
  • CS1578: Nama file, komentar baris tunggal, atau akhir baris yang diharapkan
  • CS1694: Nama file tidak valid yang ditentukan untuk arahan preprocessor. Nama file terlalu panjang atau bukan nama file yang valid
  • CS1695: Sintaks checksum #pragma tidak valid; harus #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXX}" "XXXX..."
  • CS1709: Nama file yang ditentukan untuk arahan preprocessor kosong
  • CS8938: Nilai direktif #line tidak ditemukan atau berada di luar rentang
  • CS8939: Posisi akhir arahan #line harus lebih besar dari atau sama dengan posisi awal
  • CS9028: Direktif rentang #line memerlukan spasi sebelum tanda kurung pertama, sebelum offset karakter, dan sebelum nama file

Kesalahan ini menunjukkan penggunaan #line direktif yang salah atau arahan prapemrosan terkait file. Penyebab umumnya meliputi:

  • Nama file tidak valid atau hilang (CS1560, CS1694, CS1709).
  • Format atau nilai nomor baris yang salah (CS1576, CS8938, CS8939).
  • Tidak ada sintaks yang tepat untuk nama file dan komentar (CS1578).
  • Sintaksis cacat #pragma checksum (CS1695).
  • Spasi yang tidak tepat dalam direktif rentang #line (CS9028).

Contoh CS1560/CS1694 - Nama file yang ditentukan tidak valid:

#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt"   // CS1560/CS1694 - filename too long

Contoh CS1576 - Nomor baris hilang atau tidak valid:

#line "abc.sc"         // CS1576 - missing line number
#line abc "file.cs"    // CS1576 - invalid line number format

Contoh CS1578 - Nama file, komentar, atau akhir baris yang diharapkan:

#line 101 abc.cs   // CS1578 - filename not quoted

Contoh CS1695 - Sintaks checksum #pragma tidak valid:

#pragma checksum "12345"  // CS1695 - missing GUID and checksum

Contoh CS1709 - Nama file kosong:

#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" ""  // CS1709 - empty filename

Contoh CS8938 - nilai direktif #line hilang atau di luar rentang:

#line   // CS8938 - missing value
#line 0  // CS8938 - out of range (must be 1-16,707,566)

Contoh CS8939 - kesalahan posisi akhir baris #line:

#line (1, 10) - (1, 5) "file.cs"  // CS8939 - end column < start column

Contoh CS9028 - #line jangkauan pengaturan jarak direktif:

#line(1, 1) - (1, 10)"file.cs"  // CS9028 - missing spaces

Untuk memperbaiki kesalahan ini, pastikan #line arahan anda dan direktif prapemrosan terkait file mengikuti sintaks yang benar seperti yang dijelaskan dalam dokumentasi direktif pra-prosesor.

Penggunaan direktif aplikasi berbasis file yang salah

  • CS9297: #: arahan tidak boleh muncul setelah token pertama di dalam berkas
  • CS9298: #: arahan hanya dapat digunakan dalam program berbasis file (-features:FileBasedProgram)
  • CS9299: #: arahan tidak boleh setelah #if direktif
  • CS9314: #! arahan hanya dapat digunakan dalam skrip atau program berbasis file

Kesalahan ini menunjukkan bahwa Anda salah menggunakan #: direktif untuk aplikasi berbasis file. Anda dapat mempelajari selengkapnya tentang sintaks untuk arahan ini dalam artikel tentang direktif prapemrosan di bagian tentang aplikasi berbasis file. Atau, Anda dapat menjelajahi aplikasi berbasis file dengan mengikuti tutorial tentang aplikasi berbasis file.

File berisi arahan script.cs

Kesalahan berikut menunjukkan sintaks script.cs dalam file C# yang dikompilasi:

  • CS7009: Tidak dapat menggunakan #r setelah token pertama dalam file
  • CS7010: Nama file dalam tanda kutip diharapkan
  • CS7011: #r hanya diizinkan dalam skrip
  • CS8097: #load hanya diizinkan dalam skrip

Arahan ini tidak didukung dalam C#yang dikompilasi. Anda harus menghapusnya, atau menggunakan script.cs.