Bahasa C
Preprocessors adalah direktif, yang memberikan instruksi kepada compiler untuk memproses informasi sebelum kompilasi sebenarnya dimulai.
Semua direktif praprosesor dimulai dengan #, dan hanya karakter spasi putih yang dapat muncul sebelum direktif praprosesor pada sebuah baris. Direktif preprosesor bukan pernyataan C++, jadi tidak diakhiri dengan titik koma (;).
Anda telah melihat #include direktif dalam semua contoh. Makro ini digunakan untuk memasukkan file header ke dalam file sumber.
Ada beberapa directive preprocessor yang didukung oleh C++ seperti #include, #define, #if, #else, #line, dll. Mari kita lihat directive penting −
Direktif #define preprocessor membuat konstanta simbolis. Konstanta simbolis disebut makro dan bentuk umum direktifnya adalah
#define macro-name replacement-text
Ketika baris ini muncul di file, semua kemunculan makro berikutnya dalam file itu akan diganti dengan teks pengganti sebelum program dikompilasi. Misalnya
#include <iostream> using namespace std; #define PI 3.14159 int main () { cout << "Value of PI :" << PI << endl; return 0; }
Sekarang, mari kita lakukan preprocessing kode ini untuk melihat hasilnya dengan asumsi kita memiliki file kode sumber. Jadi mari kita kompilasi dengan opsi -E dan arahkan hasilnya ke test.p. Sekarang, jika Anda memeriksa test.p, itu akan memiliki banyak informasi dan di bagian bawah, Anda akan menemukan nilainya diganti sebagai berikut −
$gcc -E test.cpp > test.p ... int main () { cout << "Value of PI :" << 3.14159 << endl; return 0; }
Anda dapat menggunakan #define untuk mendefinisikan makro yang akan mengambil argumen sebagai berikut −
Demo Langsung#include <iostream> using namespace std; #define MIN(a,b) (((a)<(b)) ? a : b) int main () { int i, j; i = 100; j = 30; cout <<"The minimum is " << MIN(i, j) << endl; return 0; }
Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut
The minimum is 30
Ada beberapa arahan, yang dapat digunakan untuk mengkompilasi bagian selektif dari kode sumber program Anda. Proses ini disebut kompilasi bersyarat.
Konstruksi praprosesor bersyarat sangat mirip dengan struktur pemilihan 'jika'. Perhatikan kode preprocessor berikut
#ifndef NULL #define NULL 0 #endif
Anda dapat mengkompilasi program untuk tujuan debugging. Anda juga dapat mengaktifkan atau menonaktifkan debugging menggunakan makro tunggal sebagai berikut −
#ifdef DEBUG cerr <<"Variable x = " << x << endl; #endif
Hal ini menyebabkan cerr pernyataan yang akan dikompilasi dalam program jika konstanta simbolis DEBUG telah didefinisikan sebelum direktif #ifdef DEBUG. Anda dapat menggunakan pernyataan #if 0 untuk mengomentari sebagian program sebagai berikut −
#if 0 code prevented from compiling #endif
Mari kita coba contoh berikut
Demo Langsung#include <iostream> using namespace std; #define DEBUG #define MIN(a,b) (((a)<(b)) ? a : b) int main () { int i, j; i = 100; j = 30; #ifdef DEBUG cerr <<"Trace: Inside main function" << endl; #endif #if 0 /* This is commented part */ cout << MKSTR(HELLO C++) << endl; #endif cout <<"The minimum is " << MIN(i, j) << endl; #ifdef DEBUG cerr <<"Trace: Coming out of main function" << endl; #endif return 0; }
Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut
The minimum is 30 Trace: Inside main function Trace: Coming out of main function
Operator praprosesor # dan ## tersedia di C++ dan ANSI/ISO C. Operator # menyebabkan token teks pengganti dikonversi menjadi string yang dikelilingi oleh tanda kutip.
Perhatikan definisi makro berikut
Demo Langsung#include <iostream> using namespace std; #define MKSTR( x ) #x int main () { cout << MKSTR(HELLO C++) << endl; return 0; }
Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut
HELLO C++
Mari kita lihat cara kerjanya. Sangat mudah untuk memahami bahwa preprocessor C++ mengubah garis −
cout << MKSTR(HELLO C++) << endl;
Baris di atas akan diubah menjadi baris berikut
cout << "HELLO C++" << endl;
Operator ## digunakan untuk menggabungkan dua token. Ini contohnya
#define CONCAT( x, y ) x ## y
Ketika CONCAT muncul di program, argumennya digabungkan dan digunakan untuk menggantikan makro. Misalnya, CONCAT(HELLO, C++) diganti dengan "HELLO C++" dalam program sebagai berikut.
Demo Langsung#include <iostream> using namespace std; #define concat(a, b) a ## b int main() { int xy = 100; cout << concat(x, y); return 0; }
Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut
100
Mari kita lihat cara kerjanya. Mudah dipahami bahwa preprosesor C++ mengubah
cout << concat(x, y);
Baris di atas akan diubah menjadi baris berikut
cout << xy;
C++ menyediakan sejumlah makro standar yang disebutkan di bawah ini −
No.No | Makro &Deskripsi |
---|---|
1 | __LINE__ Ini berisi nomor baris program saat ini ketika sedang dikompilasi. |
2 | __FILE__ Ini berisi nama file program saat ini ketika sedang dikompilasi. |
3 | __DATE__ Ini berisi string formulir bulan/hari/tahun yang merupakan tanggal terjemahan file sumber menjadi kode objek. |
4 | __TIME__ Ini berisi string dalam bentuk jam:menit:detik yang merupakan waktu saat program dikompilasi. |
Mari kita lihat contoh untuk semua makro di atas
Demo Langsung#include <iostream> using namespace std; int main () { cout << "Value of __LINE__ : " << __LINE__ << endl; cout << "Value of __FILE__ : " << __FILE__ << endl; cout << "Value of __DATE__ : " << __DATE__ << endl; cout << "Value of __TIME__ : " << __TIME__ << endl; return 0; }
Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut
Value of __LINE__ : 6 Value of __FILE__ : test.cpp Value of __DATE__ : Feb 28 2011 Value of __TIME__ : 18:52:48
Bahasa C
Array Multidimensi C++ Dalam tutorial ini, kita akan belajar tentang array multidimensi di C++. Lebih khusus lagi, cara mendeklarasikan, mengakses, dan menggunakannya secara efisien dalam program kami. Dalam C++, kita dapat membuat array dari array, yang dikenal sebagai array multidimensi. Misalnya
Operator C++ Kelebihan Beban Dalam tutorial ini, kita akan belajar tentang overloading operator dengan bantuan contoh. Dalam C++, kita dapat mengubah cara kerja operator untuk tipe yang ditentukan pengguna seperti objek dan struktur. Ini dikenal sebagai kelebihan operator . Misalnya, Misalkan kita
Warisan C++ Dalam tutorial ini, kita akan belajar tentang pewarisan dalam C++ dengan bantuan contoh. Pewarisan adalah salah satu fitur utama pemrograman berorientasi objek di C++. Ini memungkinkan kita untuk membuat kelas baru (kelas turunan) dari kelas yang ada (kelas dasar). Kelas turunan mewari
C Praprosesor dan Makro Dalam tutorial ini, Anda akan diperkenalkan dengan c preprocessors, dan Anda akan belajar menggunakan kompilasi #include, #define dan conditional dengan bantuan contoh. Preprosesor C adalah praprosesor makro (memungkinkan Anda untuk menentukan makro) yang mengubah program