Minggu, 01 Mei 2011

Preprosesor dalam Bahasa C++

Dalam Bahasa C mencakup beberapa intruksi preprocessor yang digunakan untuk memberikan perintah pada compiler. Perintah-perintah preprocessor tersebut adalah:
1. #define
2. #elif
3. #else
4. #endif
5. #error
6. #if
7. #ifdef
8. #ifndef
9. #include
10. #inline
11. #pragma
12. #undef

Masing-masing fungsi tersebut akan dijelaskan secara singkat dibawah ini. (intruksi yang berhubungan dengan #elif, #else, #endif, #ifdef, dan #ifndef semuanya dijelaskan dalam #if).

#Define
“#define” digunakan untuk melaksanakan subtitusi makro dari satu lembar teks satu denga lembar teks yang lain melalui suatu file dimana teks tersebut digunakan.
Bentuk Umumnya:
#define namecaracter-sequence
Perhatikan, bahwa dalam perintah ini, tidak ada tanda titik koma. Selanjutnya, bila karakter pertama berhasil, maka dia akan berhenti hanya pada akhir baris. Contoh, jika kita ingin memakai “TRUE” untuk angka 1 dan “FALSE” untuk angka 0, maka kita buat dua #define makro :
#define TRUE 1
#define FALSE 0
Pada contoh tersebut, compiler akan mengganti 1 dan 0 setiap menjumpai TRUE dan FALSE.
Intruksi #define mempunyai feature kuat yang lain: suatu makro mempunyai argument. Makro yang mempunyai argument akan bekerja sama dengan fungsi. Setiap ditemukan makro, maka argument akan bergabung dengan makro yang ditempatkan oleh argument actual tersebut yang berada pada program.
Contoh:
#include “stdio.h”
#define ABS (a) (a) <0 ? – (a) : (a) main (void) { Printf(“abs of -1 and 1 : %d %d”, ABS (-1), ABS (1)); Return 0; } Ketika rogram tersebut di compile, “a” pada definisi makro akan diganti dengan angka -1 dan 1, tanda kurung yang ada di “a” sangat diperlukan untuk meyakinkan subtitusi pada semua hal yang semestinya.

#Error
Intruksi #error akan memaksa compiler untuk menghentikan suatu kompilasi. Pada pokonya #error ini digunakan dalam “debugging”. Bentuk Umumnya: #error message Jika dijumpai #error , maka akan terlihat suatu pesan dan angka baris.

#if, #elif, #else, #endif, #ifdef, dan #ifndef
Intruksi-intruksi tersebut digunakan pada beberapa porsi variasi compile secara selektif. Ide yang umum adalah bahwa jika suatu ekspresi setelah #if, #ifdef, atau #ifndef adalah benar, maka kode yang berada diantara salah satu dari mereka dan #endif, akan tersusun; tapi jika yang terjadi sebaliknya, maka akan terlompati. #endif digunakan untuk menandai akhir suatu blok. Intruksi #else dapat digunakan dengan salah satu dari mereka dengan cara yang sama, yaitu dengan “else” pada perintah C. Bentuk Umum pada #if: #if constant-expression Jika ekspresi konstanta tersebut betul, maka blok kode akan tersusun. Bentuk Umum pada #ifdef: #ifdef macro-name Jika nama makro telah ditentukan dengan #define, maka blok kode berikutnya akan tersusun. Intruksi #elif digunakan untuk membuat suatu perinyah “if-else-if”. Bentuk Umumnya: #elif constant-expression #elif dapat digunakan dengan #if, tai tidak dengan #ifdef dan #ifndef.  

#Include
Intruksi #include akan memerintah compiler membaca dan menyusun file sumber yang lain. Bentuk Umumnya: #include “filename” atau #include
File sumber yang akan dibaca harus ditutup antara tanda kurung atau tanda kurung lancip. Jika nama file ditutup dengan tanda kurung lancip, maka file akan dicari dengan cara yang telah ditentukan oleh kreasi dari compiler.
Sering kali ini berarti suatu pencurian beberapa direktori khusus yang didalamnya terdapat file.
Jika nama file ditutup dengan tanda kurung, maka file akan dicari dengan cara yang telah ditantukan implementasinya. Pada beberapa implementasi hal ini berarti pencarian direktori yang sedang aktif bekerja. Jika file tidak ditemukan maka pencarian akan diulang seolah nama file ditutup dengan tanda kurung lancip. Kita harus melihat buku manual compiler agar kembali mengetahui detil perbedaan antara tanda kurung dengan tanda kurung lancip.
#include dapat diletakan pada file-file yang ada lainnya. Contoh: #include.

#Line
Intruksi #line digunakan untuk mengubah isi dari “ __LINE__” dan “__FILE__”, yang telah ditentukan pada compiler.
Bentuk utamanya: #line number “filename”
Dimana”number” adalah integer positif, dan “filename” adalah identifier ayng valid. “number” akan menjadi angka baris sumber dan “filename” akan menjadi nama file sumber. Nama dari file adalah optional. #line pada pokonya digunakan untuk “debugging” suatu tujuan dan aplikasi khusus.

#pragma
Instruksi #pragma adalah suatu instruksi yang telah didefinisikan implementainya, yang memungkinkan suatu variasi instruksi yang diberikan pada compiler. Contoh suatu compiler mungkin mempunyai suatu pilihan untuk mendukung pembuatan penggandaan program. Pilihan penggandaan (trace), kemudian akan ditentukan oleh perintah #pragma.

#undef
Instruksi #undef digunakan untuk memindah definisi yang telah ditentukan sebelumnya dari nama makro yang mengikutinya.
Bentuk umumnya:
#undef macro-name

2 komentar: