Anda di halaman 1dari 4

Preprocessor adalah bagian pertama yang dipanggil/dibaca oleh compiler saat penerjemahan bahasa sumber suatu program .

Preprocessor yang menangani arahanuntuk dimasukkan ke file source (# include), definisi makro (# define), dan inklusibersyarat (# jika). ===================================================================================== Preprocessor adalah bagian dari sebuah software development tool untuk bahasa C yang bertugas untuk melakukan pengolahan source code sebelum diberikan kepada compiler untuk diolah lebih lanjut. Cara kerja preprocessor adalah dengan membaca perintah preprocessor directive (pengarah preprocessor) yang dituliskan dalam pembuatan program dengan selalu diawali dengan tanda # (pound).

Persamaan pre-processors pada bahasa C & C++

1.Keduanya menggunakan # include untuk mengikut sertakan pustaka kode berupa file header pada program yang akan kita tulis. 2.Keduanya Case Sensitive yang berarti membedakan penulisan huruf besar dan huruf kecil, sehingga {Komputer} berbeda dengan komputer dan berbeda dengan {KOMPUTER}

Perbedaan pre-processors pada bahasa C & C++

1.Bahasa C menggunakan #include < stdio.h > yang memungkinkan kita untuk memasukkan nilai input dan menghasilkan nilai output..Bahasa C++ menggunakan#include < iostream.h> memberitahukan preprocessor kompiler untuk menyertakan header file standardiostream. File spesifik ini juga termasuk library deklarasi standard I/O pada C++ dan file ini disertakan karena fungsi-fungsinya akan digunakan nanti dalam program. Sumber: http://www.modernw4r3.com/2011/02/persamaan-perbedaan-pre-processors-pada.html

=====================================================================================

Preprocessor dan Macro


Preprocessor3 adalah bagian dari sebuah software development tool4 untuk bahasa C yang bertugas untuk melakukan pengolahan source code sebelum diberikan kepada compiler untuk diolah lebih lanjut. Preprocessor pada dasarnya menerjemahkan source code yang kita buat ke bentuk yang dapat dikenali oleh compiler. Dalam bahasa C, ada beberapa keyword5 yang sebenarnya tidak dikenali oleh compiler, umumnya keyword ini diawali dengan #, misalnya #macro, #define, #include, #pragma dan lain-lain, keyword inilah yang diolah oleh preprocessor. Preprocessor merupakan salah satu bagian Software Development Tool yang tergantung kepada vendor yang membuat tool tersebut, namun demikian, kita akan membahas beberapa keyword yang umum diolah oleh preprocessor (telah di standarisasi). Keyword yang diolah oleh preprocessor antara lain:

Catatan: 3 Preprocessor juga ada dalam bahasa lain, tetapi yang kita maksud di sini adalah preprocessor untuk bahasa C. 4 Software development Tool misalnya Turbo C, Visual C++, Borland C++ Builder, GNU C dan lain-lain yang dapat mengolah source code C. 5 Kata-kata yang mempunyai arti khusus dan digunakan secara internal oleh compiler.

#include, keyword ini membuat kita seakan-akan telah mengetik isi dari file yang dicantumkan sesudah keyword tersebut. Misalnya: #include < stdio.h > akan membuat preprocessor mengekspansikan file stdio.h pada tempat keyword #include tadi diketikkan. #include mempunyai dua macam bentuk yaitu #include <...> dan #include "..." , titik-titik tersebut adalah nama file. #include <...> akan
membuat preprocessor mencari file yang namanya dicantumkan di dalam kurung pada direktori- direktori yang telah didefinisikan oleh software development tool yang kita gunakan, misalnya pada direktory INC, INCLUDE, tanda petik ganda pada direktori file yang memiliki keyword akan mencari file test.h pada direktori test.

#include "..." akan membuat preprocessor mencari file yang namanya dicantumkan di dalam #include tersebut. Misalnya anda mengerjakan file test.c yang ada pada direktori bernama test, dan anda mengetikkan #include "test.h", maka preprocessor
dan lain-lain.

#define, keyword ini mempunyai format: #define identifier token-stringopt. Identifier adalah nama sebuah konstanta yang akan kita gunakan dalam program kita, dan token-string adalah nilai dari identifier tersebut (nilai ini harus dapat dikenali oleh compiler), token-string dapat merupakan sebuah ekspresi6. Preprocessor akan mengganti setiap kemunculan identifier dengan nilai pada token-string. Jika token-string dikosongkan, maka identifier tadi akan hilang dari source code program kita (pada baris-baris selanjutnya, identifier menjadi tidak dikenali sebab tidak memiliki nilai lagi). Contoh: #define a 0xff akan membuat setiap kemunculan a dalam program, misalnya Function1(a) diganti dengan 0xff (255 desimal), dan jika sesudah baris Function1(a) ada baris #define a , maka a sudah tidak akan dikenali lagi pada bagian tokenstringopt, token-string merupakan sebuah ekspresi, maka identifier tersebut disebut sebagai makro. Makro akan diolah preprocessor, setiap kemunculan identifier pada source code yang akan diganti dengan ekspresi token-string (jika baris source code tsb tidak mengandung # sebagai karakter pertamanya), ekspresi
ini kemudian diolah oleh compiler. selanjutnya. Dengan demikian penggunaan a pada baris-baris selanjutnya adalah ilegal (compiler akan memberikan pesan kesalahan saat program di buat/ di-compile). Jika pada #define identifier

Catatan: 6 Ekspresi adalah sekumpulan operator (misalnya +, -, dll) dan operand (variabel yang dikenai operasi) yang mengerjakan salah satu kombinasi aktivitas berikut: Menghitung nilai,

memindahkan nilai ke dalam suatu objek atau fungsi (fungsi akan dijelaskan lebih lanjut), atau menghasilkan efek samping (misalnya membuat sebuah baris program dieksekusi atau tidak).

Contoh: makro #define

a ((c)*(d)) akan mengganti setiap kemunculan a dengan nilai hasil perkalian variabel c

dan d. Tanda kurung yang banyak untuk memastikan bahwa makro kita dieksekusi sesuai dengan yang kita inginkan, sebab ada yang disebut dengan operator precedence, yaitu urutan pengerjaan operator jika berbagai operator muncul dalam sebuah pernyataan. Misalnya: a*b+c , pada ekspresi ini, yang akan diolah terlebih dulu adalah perkalian a dan b, kemudian hasilnya dijumlahkan dengan c. makro dapat mempunyai parameter(nilai input). Berikut ini contohnya:

#define .... int y = int z = int x =

kali(a,b) ((a)*(b)) 20; 90; kali(y,z);

Pada source code di atas, int adalah tipe data variabel, kita akan belajar lebih lanjut tentang hal ini. Saat preprocessor menemukan ekspresi kali(y,z) , maka nilai y dan z dari baris-baris sebelumnya akan menggantikan y dan z pada diperoleh

kali(y,z), kemudian kali(y,z) berubah menjadi ((y)*(z)) sehingga 20x90 = 1800, kemudian hasil ini dipindahkan ke x (tanda = artinya pindahkan nilai di sebelah kanan

tanda ini ke variabel yang ada di sebelah kiri tanda ini).

#if, keyword ini digunakan untuk menentukan pengolahan baris-baris source code sesudahnya, sampai dengan keyword #endif. Formatnya adalah : #if expression , expression adalah sebuah ekspresi yang valid (dapat diolah oleh compiler). Jika ekspresi tersebut benar maka baris-baris source code sesudah #if akan diolah dan sebaliknya jika ekspresi tersebut bernilai salah. Keyword ini harus digunakan bersama dengan keyword #endif
untuk menandakan batas penggunaan keyword tersebut dalam source code. Contoh:

#define TEST 2 #if (TEST > 0) ... baris source code; #endif
Pada potongan program diatas, baris source code akan diolah sebab ekspresi

TEST > 0 adalah benar.

#ifdef, keyword ini penggunaannya sama dengan #if. Formatnya: #ifdef identifier, identifier adalah #define) maka baris-baris source code sesudah #ifdef akan diolah oleh kompiler, demikian pula sebaliknya. Keyword ini harus digunakan bersama dengan keyword #endif untuk menandakan batas penggunaan keyword tersebut dalam source code
sebuah konstanta. Jika identifier telah didefinisikan sebelumnya (dengan keyword

#ifndef, keyword ini mempunyai format yang sama dengan #ifdef, tetapi cara kerjanya adalah kebalikan dari #ifdef, sehingga jika baris- baris program sesudahnya justru diolah jika identifier tidak didefinisikan sebelumnya. Keyword ini harus digunakan bersama dengan keyword #endif untuk menandakan batas
penggunaan keyword tersebut dalam source code

#endif , keyword ini sebagai pembatas untuk menadakan bagian akhir dari source code yang akan dikenai efek jika keyword #if, #ifdef dan #ifndef dievaluasi.

#undef, adalah keyword untuk menonaktifkan identifier yang telah didefinisikan dengan #define, efeknya sama dengan #define identifier . Dengan demikian kita dapat mendefinisikan kembali identifier tadi
setelah #undef.

#else, keyword ini digunakan di antara keyword #if, #ifdef, #ifndef dengan keyword #endif. Jika ekspresi pada keyword #if, #ifdef, #ifndef benar maka source code sesudah #else, tidak akan
dieksekusi,demikian pula sebaliknya.Contoh:

#define TEST 0 #if (TEST > 0) ... baris source code1; #else ... baris source code2; #endif Pada potongan program diatas, baris source code2; akan diolah sebab ekspresi TEST > 0
adalah salah.

Sumber: http://www.scribd.com/doc/6866569/Tutorial-Pemrograman-Bahasa-C-dan-Assembly penulis: Darmawan M S a.k.a Pinczakko

Anda mungkin juga menyukai