Artikel Terbaru

4 Keunggulan Utama Bitcoin

Sebelum membicarakan tentang bitcoin, terlebih dahulu mari pahami apa yang dimaksud dengan uang. Apa sebenarnya yang dimaksud dengan uang? Pada dasarnya, uang adalah segala sesuatu yang mewakili nilai tertentu.

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 !

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

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

6 Tahap Utama dalam Melakukan Kompilasi Program Hello World Java

4 Contoh Program Java dan Multiple Inheritance

3 Jenis Utama Looping pada Java