Monday 24 October 2016

22. Preprocessor Directives C# (Basic/Dasar)

Preprocessor directive akan digunakan untuk melakukan pemrosesan pada code sebelum kompilasi program terjadi. Semua preprocessor directives dimulai dengan tag #, dan hanya boleh ada white spaces non character sebelum # tag. Perlu diketahui bahwa preprocessor directives bukanlah statement sehingga tidak perlu ada semicolon (;) pada akhir preprocessor.

Berbeda dengan preprocessor pada C++, preprocessor pada C# tidak digunakan untuk membuat macros, tetapi lebih ke instruksi dalam sebuah baris.

Preprocessor Directives Pada C#

Berikut ini adalah daftar preprocessor directive pada C#

Preprocessor DirectiveDescription.
#defineIt defines a sequence of characters, called symbol.
#undefIt allows you to undefine a symbol.
#ifIt allows testing a symbol or symbols to see if they evaluate to true.
#elseIt allows to create a compound conditional directive, along with #if.
#elifIt allows creating a compound conditional directive.
#endifSpecifies the end of a conditional directive.
#lineIt lets you modify the compiler's line number and (optionally) the file name output for errors and warnings.
#errorIt allows generating an error from a specific location in your code.
#warningIt allows generating a level one warning from a specific location in your code.
#regionIt lets you specify a block of code that you can expand or collapse when using the outlining feature of the Visual Studio Code Editor.
#endregionIt marks the end of a #region block.
Preprocessor #define

Preprocessor #define digunakan untuk membuat simbolik konstanta. Dengan menggunakan #define kita akan membuat sebuah konstanta yang nanti bisa kita gunakan untuk dievaluasi menggunakan preprocessor #if.

Misalnya kita ingin mendefinisikan konstan maka bisa dengan cara sebagai berikut:

#define symbol

Contoh program dibawah ini akan mengilustrasikan penggunaan preprocessor #defines:

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

Setelah program diatas dijalankan maka akan memberikan output sebagai berikut:

PI is defined

Conditional Directives

Kita bisa menggunakan #if directives untuk melakukan pengecekan pada sebuah simbol, sangat berguna untuk melakukan pengecekan apakah sebuah simbol bernilai benar atau salah.

Sintak untuk conditional directives adalahs sebagai berikut:

#if symbol [operator symbol]...

DImana symbol adalah symbol yang akan kita test, kita juga bisa menggunakan true atau false atau juga bisa menempelkan simbol negasi operator (!).

Operator yang bisa digunakan untuk conditional directives adalah sebagai berikut:

  • == (equality)
  • != (inequality)
  • && (and)
  • || (or)
Kita juga bisa mengelompokkan simbol dengan menggunakan tanda kurung buka tutup (). Conditional directives biasanya digunakan untuk membedakan configurasi, untuk mengecheck configurasi yang digunakan sebelum proses kompilasi program.

Contoh program dibawah ini akan mengilustrasikan penggunaan conditional directives:

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

Setelah program dijalankan akan memberikan output sebagai berikut:

DEBUG and VC_V10 are defined

Ok guys, sampai ketemu di tutorial selanjutnya Regular Expression.

1 comment:

  1. The preprocessor directives give instruction to the compiler to preprocess the information before actual compilation starts. Dot Net Training in chennai | Dot Net Training in velachery

    ReplyDelete