Preprocessor

Preprocessor dalam C++ mempengaruhi proses yang dilakukan compiler pada kode program dengan menggantikan atau mengisi suatu bagian kode program sesuai perintah yang diberikan. Preprocessor diawali dengan "#". Ada beberapa preprocessor dalam C++, yaitu :
  1. #include : Menyertakan isi file header ("*.h") dalam kode program.
  2. #define : Menggantikan identifier dalam program dengan makro atau suatu nilai.
  3. #undef : Menghapus identifier yang sudah dibuat dengan #define.
  4. #Pragma : Perintah khusus compiler yang bisa berbeda untuk setiap compiler.
  5. Conditional Preprocessor ( #if, #elseif, #else) : Menentukan bagian program yang akan di-compile berdasarkan suatu persyaratan seperti OS atau compilernya.
Sebelumnya kita pernah menggunakan #include untuk menyertakan header standar. Ada dua cara menggunakan #include.
  1. Jika #include menggunakan header standar C++ atau header default yang sudah ditentukan lokasinya, nama file diapit dengan "<" dan ">".
  2. Jika #include digunakan untuk menambahkan header yang berada di dalam folder yang sama dengan kode program C++, nama file diapit diantara dua tanda kutip.
Untuk lebih jelasnya lihat contoh berikut :
#include <stdio.h>
#include "headerku.h"

int main(void){
    printf("Hello, world!\n");
    return 0;
} 
Untuk meng-compile program tersebut harus ada file "headerku.h" di folder yang sama dengan file kode program di atas.

Berbeda dengan constanta yang sebenarnya adalah variabel yang dibatasi kegunaannya. #define diguakan untuk memberikan nama pada suatu nilai atau macro. Berbeda dengan const yang menyimpan nilai seperti variabel, #define tidak digunakan untuk menyimpan nilai. #define hanya memberi "nama pengganti" pada angka, string atau macro.
#include <stdio.h>

#define angka 5

int main(void){
    #ifndef angka
    printf("angka sudah tidak didefinisikan\n");
    #else
    printf("%d sudah didefinisikan\n", angka);
    #endif

    #undef angka

    #ifndef angka
    printf("angka sudah tidak didefinisikan\n");
    #else
    printf("%d sudah didefinisikan\n", angka);
    #endif
    return 0;
}
Dengan #define kita bisa memperjelas penulisan program dan kita bisa mengubah nilai yang diwakili nama dalam #define dengan mudah. Jika kita sudah tidak membutuhkan #define, kita bisa menggunakan undef untuk menyingkirkannya.

Kalau kalian malas mengetik, coba download source codenya di sini.