[ HTML ] [ Java ] [ Bahasa C ]


Minggu, Juni 28, 2020

Preprosesor Direktif Bahasa C dan C++ Lanjutan

Artikel ini akan menjelaskan tentang lanjutan materi dari pengertian preprosesor direktif pada bahasa C dan C++ yang telah dipaparkan pada materi sebelumnya dengan judul yang sama dengan artikel ini.

Direktif preprosesor: Pada hampir setiap program pada bahasa C dan C++ dapat ditemukan preprosesor direktir pada bagian atas dari program yang diawali dengan tanda '#'. Pada baris program tersebut akan dilakukan pemrosesan oleh kompilator sebelum kompilasi sesungguhnya dilaksanakan. Pada bagian akhir dari baris preprosesor direktif yang diidentifikasi tidak ada semicolon ';' yang diperlukan untuk mengakhiri perintah pada baris tersebut seperti pada akhiran program bahasa C pada umumnya. 

Direktif preprosesor umumnya digunakan untuk mendefinisikan makro dan evaluasi kondisional suatu statement pada program, include file sumber, direktif pragma, kontrol baris, deteksi error, dan lain sebagainya.

Pada bagian ini akan dibahas beberapa tipe dari direktif preprosesor seperti diperlihatkan pada penjelasan berikut:
satu, Kompilasi kondisional
dua, Line kontrol
tiga, Direktif error

Selanjutnya akan dijelaskan setiap direktif tersebut secara lebih detail:

satu, Kompilasi Kondisional: Direktif kompilasi kondisional membantu untuk mengkompilasi ukuran spesifik dari program atau melewatkan kompilasi dari bagian khusus pada program berdasarkan kondisi tertentu. Pada materi direktif preprosesor sebelumnya, telah dibahas tentang dua tipe direktif, yaitu 'ifdef' dan 'endif'. Pada materi kali ini akan dibahas tentang #ifndef, #if, #else, dan #elif.

#ifdef: Direktif ini adalah jenis direktif dengan kondisi paling sederhana, diaman Block pada direktif ini disebut dengan grup kondisional. Teks yang dikontrol akan dimasukkan dalam output preprosesor jika macroname telah didefinisikan. teks kontrol yang terdapat dalam kondisional akan merangkul direktif preprosesor tersebut, dan hanya akan dieksekusi ketika kondisi telah terpenuhi. Direktif ini dapat ditempatkan pada multiple layer, tetapi harus dalam kondisi bersarang penuh (full nested). Dengan kata lain, ‘#endif’ harus selalu cocok dengan ‘#ifdef ' terdekat (atau‘ #ifndef ’, atau‘ #if ’)

Sintak:
#ifdef MACRO
teks kontrol
#endif /* macroname */

#ifndef: Diketahui bahwa pada direktif #ifdef jika macroname telah didefinisikan, maka blok dari statement tersebut akan mengikuti direktif #ifdef dan akan dieksekusi secara normal, tetapi jika tidak, maka kompilator akan secara sederhana melewati blok statement tersebut. Direktif #ifndef secara sederhana berlawanan dengan direktif #ifdef. Pada kondisi #ifndef, blok statement antara #ifndef dan #endif akan dieksekusi hanya jika makro dari identifier dengan #ifndef tidak didefinisikan.

Sintak:
ifndef macro_name
statement1;
statement2;
statement3;
.
.
.
statementN;
endif

Jika makro dengan nama 'macroname' tidak didefinisikan menggunakan direktif #define, maka hanya blok statement itu saja yang akan dieksekusi.

#if, #else, dan #elif: Ketiga direktif tersebut bekerja secara bersamaan dan mengendalikan ukuran dari kompilasi program menggunakan beberapa pengkondisian tertentu. Jika kondisi dengan direktif #if dievaluasi ke nilai non zero, maka kelompok dari baris akan dieksekusi secepatnya setelah direktif #if dieksekusi, juga jika kondisi dengan direktif #elif dievaluasi ke nilai non zero, maka kelompok dari direktif akan segera dieksekusi setelah direktif #elif dieksekusi dan jika tidak, maka direktif #else akan dieksekusi setelahnya.

Sintak:
#if macro_condition
statements
#elif macro_condition
statements
#else
statements
#endif

Contoh:

#include<iostream> 

 

#define gfg

 

#if gfg > 200 

#undef gfg 

#define gfg 200 

#elif gfg < 50 

#undef gfg 

#define gfg 50 

#else 

#undef gfg 

#define gfg 100 

#endif 

 

int main() 

std::cout << gfg; // gfg = 50 

}

Output:
50

Perhatikan bahwa, semua struktur dari direktif #if, #elif, dan #else saling berkaitan satu sama lain dan diakhiri dengan direktif #endif.

dua, Line Control (#line): Dimanapun kompilator ketika melakukan kompilasi program, selalu terdapat kemungkinan dari ketidaktepatan dari beberapa program tersebut atau mengalami error. Dimanapun identifier kompilator mengalami error dalam program, maka program tersebut akan disediakan nama file yang ditemukan pada bagian error tersebut bersamaan dengan daftar baris dari angka pasti dimana posisi dari baris error tersebut berada. Hal ini akan mempermudah proses pencarian error pada bagian program tersebut.

Namun Demikian programmer dapat mengendalikan informasi mana yang harus disediakan oleh kompilator selama pristiwa error tersebut terjadi pada saat proses kompilasi program menggunakan direktif #line.

Sintak:
#line number "filename"

Tiga, Error direktif (#error): Direktif ini membatalkan proses kompilasi program ketika ditemukan program yang mengalami error yang bersifat optional dan secara khusus dapat dipergunakan sebagai parameter.

Sintak:
#error optional_error

Berikut, optional_error yang ditentukan oleh user terhadap jenis error tertentu dan akan ditampilan ketika menemukan error pada program.

Contoh:
#ifndef MakanNasiPadang
#error MakanNasiPadang not found ! 
#endif 

Output:
error: #error MakanNasiPadang not found !

6 komentar:

  1. Apa yang dimaksud dengan direktif dan preprosesor pada bahasa pemrograman C?

    BalasHapus
    Balasan
    1. Preprosesor bahasa C adalah preprosesor makro yang digunakan secara otomatis oleh kompilator bahasa C untuk mengubah program yang dibuat oleh programmer sebelum kompilasi program sesungguhnya dilaksanakan oleh kompilator. Contoh, #define adalah direktif yang mendefinisikan makro.

      Hapus
  2. Direktif preprosesor, seperti #define dan #ifdef, biasanya digunakan untuk membuat program kode sumber untuk lebih mudah dikompilasi pada lingkungan pengembangan program yang berbeda. Direktif dalam file sumber membertahukan preprosesor untuk mengambil suatu tindakan tertentu pada program, dimana jalur dari preprosesor akan dikenali dan dijalankan sebelum dilakukan ekspansi makro pada saat kompilasi program.

    BalasHapus
  3. Kenapa disebut dengan direktif pada bahasa C?

    BalasHapus
    Balasan
    1. Sebelum program bahasa C dikompilasi oleh kompilator, kode sumber program yang telah dibuat tersebut akan diproses oleh program yang disebut dengan preprosesor. Proses tersebut disebut dengan preprosesing, dimana perintah yang digunakan dalam preprosesor disebut dengan direktif yang dimulai dengan simbol '#'.

      Hapus
  4. DAFTAR RUJUKAN

    ppd_better_practice_cs.auckland.ac.nz
    http://www.cplusplus.com/doc/tutorial/preprocessor/

    BalasHapus

Respon komentar 7 x 24 jam, so please be patient :D