C# – Directive Preprocessor

Preprocessor Directives memberikan instruksi kepada compiler untuk memproses informasi sebelum kompilasi sebenarnya dimulai.

Semua preprocessor directives dimulai dengan tanda #, dan cuma karakter spasi yang boleh muncul sebelum preprocessor directive di sebuah baris. Preprocessor directives bukan pernyataan, jadi enggak perlu pake titik koma (;) diakhirnya.

Kompiler C# gak punya preprocessor yang terpisah; tapi, directive-directive itu diproses kayak ada preprocessor. Di C#, directive-directive preprocessor dipake buat bantuin kompilasi kondisional. Bedanya dengan directive-diective di C dan C++, directive-diective ini gak dipake buat bikin macro. Satu directive preprocessor harus jadi satu-satunya perintah di dalam satu baris.

Directive Preprocessor C#

Berikut ini adalah tabel yang menjelaskan directive preprocessor yang ada dalam C#.

Sr.No.Preprocessor Directive & Description
1#define
Digunakan untuk mendefinisikan serangkaian karakter yang disebut simbol.
2#undef
Digunakan untuk menghapus definisi sebuah simbol.
3#if
Digunakan untuk menguji apakah sebuah simbol atau simbol-simbol bernilai true.
4#else
Digunakan untuk membuat directive kondisional gabungan bersama dengan #if.
5#elif
Digunakan untuk membuat directive kondisional gabungan.
6#endif
Menandakan akhir dari sebuah directive kondisional.
7#line
Digunakan untuk mengubah nomor baris kompiler dan (opsional) nama file keluaran untuk error dan peringatan.
8#error
Digunakan untuk menghasilkan error dari lokasi tertentu dalam kode.
9#warning
Digunakan untuk menghasilkan peringatan level satu dari lokasi tertentu dalam kode.
10#region
Digunakan untuk menentukan blok kode yang bisa diperluas atau dikompres saat menggunakan fitur outlining di Editor Kode Visual Studio.
11#endregion
Menandakan akhir dari blok #region.

Preprocessor #define

Directive preprocessor #define ini digunakan untuk membuat konstanta simbolik.

Directive preprocessor #define memungkinkan kamu mendefinisikan sebuah simbol, sehingga dengan menggunakan simbol tersebut sebagai ekspresi yang diberikan ke directive #if, ekspresi tersebut akan menghasilkan nilai true. Berikut adalah sintaksnya:

#define symbol

Program berikut ini menunjukkan contoh cara memakai #define.

#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();
      }
   }
}

Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:

PI is defined

Directive Kondisional

Kamu bisa pakai #if buat bikin directive kondisional. Directive kondisional berguna buat ngetes simbol atau beberapa simbol apakah mereka nilainya bener. Kalo nilainya bener, kompiler bakal ngevaluasi semua kode antara #if sama directive berikutnya.

Nah, jadi syntax untuk perintah kondisional tuh seperti ini:

#if symbol [operator symbol]...

Di sini, simbol adalah nama dari simbol yang ingin kamu uji. Kamu juga bisa menggunakan true dan false atau menambahkan operator negasi di depan simbol tersebut.

Operator simbol adalah operator yang digunakan untuk mengevaluasi simbol. Operator-operator tersebut dapat berupa:

  • == (sama dengan)
  • != (tidak sama dengan)
  • && (dan)
  • || (atau)

Kamu juga bisa mengelompokkan simbol dan operator dengan tanda kurung. Petunjuk kondisional digunakan untuk mengompilasi kode untuk versi debug atau saat mengompilasi untuk konfigurasi tertentu. Directive kondisional yang dimulai dengan petunjuk #if harus secara eksplisit diakhiri dengan petunjuk #endif.

Program berikut ini menunjukkan penggunaan directive kondisional:

#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();
   }
}

Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:

DEBUG and VC_V10 are defined

Leave a Reply

Your email address will not be published. Required fields are marked *