Preprosesor Direktif Bahasa C dan Fungsinya Tingkat Lanjut
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.
Sebelum memahami lebih dalam materi tentang Preprosesor Direktif Bahasa C dan Fungsinya Tingkat Lanjut, terlebih dahulu pelajari materi tentang: Preprosesor Direktif Bahasa C dan Fungsinya, Cara Kerja Preprosesor pada Bahasa C, dan Konstanta Bahasa C dan Fungsinya.
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.
Baca Juga:
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:
- Kompilasi kondisional
- Line kontrol
- 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 mkn 7
#if mkn > 200
#undef mkn
#define mkn 200
#elif mkn < 50
#undef mkn
#define mkn 50
#else
#undef mkn
#define mkn 100
#endif
int main()
{
std::cout << mkn; // mkn = 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 !
Referensi Tambahan:
- Manfaat Utama Keyword _Generic pada Bahasa C
- 13 Contoh Program Fungsi Library Matematika Math.h pada Bahasa C
- 5 Perbedaan Utama Typedef vs #define pada Bahasa C
- 14 Macam Specifier Fungsi Strftime pada Bahasa C
- 6 Jenis Fungsi Exec Family dan Perannya dalam Bahasa C
- 5 Kelebihan dan Fakta Menarik Tentang Array pada Bahasa C dan C++
- 3 Contoh Program Penggunaan String pada Bahasa C
Artikel ini didedikasikan kepada: Dhimas Muhammad Firdaus, Emi Mardiyanti, Eri Eriyanto, Fandi Panji Kurniawan, dan Fatimah Nailal Hana.
6 komentar untuk "Preprosesor Direktif Bahasa C dan Fungsinya Tingkat Lanjut"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Apa yang dimaksud dengan direktif dan preprosesor pada bahasa pemrograman C?
BalasHapusPreprosesor 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.
HapusDirektif 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.
BalasHapusKenapa disebut dengan direktif pada bahasa C?
BalasHapusSebelum 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 '#'.
HapusDAFTAR RUJUKAN
BalasHapusppd_better_practice_cs.auckland.ac.nz
http://www.cplusplus.com/doc/tutorial/preprocessor/