C Preprocessor dan Macro

Dalam tutorial ini, Anda akan diperkenalkan dengan c preprocessor, dan Anda akan belajar menggunakan #include, #define dan kompilasi kondisional dengan bantuan contoh.

Praprosesor C adalah praprosesor makro (memungkinkan Anda menentukan makro) yang mengubah program Anda sebelum dikompilasi. Transformasi ini dapat berupa penyertaan file header, ekspansi makro, dll.

Semua arahan preprocessing dimulai dengan #simbol. Sebagai contoh,

 #define PI 3.14

Beberapa kegunaan umum dari C preprocessor adalah:

Termasuk File Header: #include

The #includepreprocessor digunakan untuk menyertakan file header untuk program C. Sebagai contoh,

 #include 

Di sini, stdio.hadalah file header. The #includepreprocessor direktif menggantikan baris di atas dengan isi stdio.hfile header.

Itulah alasan mengapa Anda perlu menggunakan #include sebelum Anda dapat menggunakan fungsi seperti scanf()dan printf().

Anda juga dapat membuat file header Anda sendiri yang berisi deklarasi fungsi dan memasukkannya ke dalam program Anda menggunakan arahan preprocessor ini.

 #include "my_header.h"

Kunjungi halaman ini untuk mempelajari lebih lanjut tentang menggunakan file header.

Makro menggunakan #define

Makro adalah fragmen kode yang diberi nama. Anda dapat menentukan makro di C menggunakan #definearahan preprocessor.

Berikut contohnya.

 #define c 299792458 // speed of light

Di sini, ketika kami menggunakan c dalam program kami, itu diganti dengan 299792458.

Contoh 1: #define preprocessor

 #include #define PI 3.1415 int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); // Notice, the use of PI area = PI*radius*radius; printf("Area=%.2f",area); return 0; )

Berfungsi seperti Macro

Anda juga dapat menentukan makro yang bekerja dengan cara yang mirip seperti panggilan fungsi. Ini dikenal sebagai makro mirip fungsi. Sebagai contoh,

 #define circleArea(r) (3.1415*(r)*(r))

Setiap kali program bertemu circleArea(argument), itu diganti dengan (3.1415*(argument)*(argument)).

Misalkan, kita meneruskan 5 sebagai argumen, kemudian meluas seperti di bawah ini:

 circleArea(5) expands to (3.1415*5*5)

Contoh 2: Menggunakan #define preprocessor

 #include #define PI 3.1415 #define circleArea(r) (PI*r*r) int main() ( float radius, area; printf("Enter the radius: "); scanf("%f", &radius); area = circleArea(radius); printf("Area = %.2f", area); return 0; )

Kunjungi halaman ini untuk mempelajari lebih lanjut tentang makro dan #define preprocessor.

Kompilasi Bersyarat

Dalam pemrograman C, Anda dapat menginstruksikan preprocessor apakah akan menyertakan blok kode atau tidak. Untuk melakukannya, arahan bersyarat dapat digunakan.

Ini mirip dengan ifpernyataan dengan satu perbedaan utama.

The ifpernyataan diuji selama waktu eksekusi untuk memeriksa apakah blok kode harus dijalankan atau tidak sedangkan, conditional digunakan untuk memasukkan (atau melewatkan) blok kode dalam program Anda sebelum eksekusi.

Penggunaan Bersyarat

  • menggunakan kode yang berbeda tergantung pada mesin, sistem operasi
  • mengkompilasi file sumber yang sama dalam dua program berbeda
  • untuk mengecualikan kode tertentu dari program tetapi menyimpannya sebagai referensi untuk tujuan masa depan

Bagaimana cara menggunakan kondisional?

Untuk menggunakan kondisional, #ifdef, #if, #defined, #elsedan #elseifarahan yang digunakan.

Petunjuk #ifdef

 #ifdef MACRO // conditional codes #endif 

Di sini, kode bersyarat dimasukkan dalam program hanya jika MAKRO ditentukan.

Petunjuk #if, #elif dan #else

 #if expression // conditional codes #endif 

Di sini, ekspresi adalah ekspresi berjenis integer (bisa berupa integer, karakter, ekspresi aritmatika, makro, dan sebagainya).

Kode kondisional disertakan dalam program hanya jika ekspresi dievaluasi ke nilai bukan nol.

#elseDirektif opsional dapat digunakan dengan #ifdirektif.

 #if expression conditional codes if expression is non-zero #else conditional if expression is 0 #endif 

Anda juga dapat menambahkan bersyarat bersyarat untuk Anda #if… #elsegunakan#elif

 #if expression // conditional codes if expression is non-zero #elif expression1 // conditional codes if expression is non-zero #elif expression2 // conditional codes if expression is non-zero #else // conditional if all expressions are 0 #endif 

#defined

Operator khusus #defined digunakan untuk menguji apakah makro tertentu ditentukan atau tidak. Ini sering digunakan dengan arahan #if.

 #if defined BUFFER_SIZE && BUFFER_SIZE>= 2048 // codes 

Makro Standar

Berikut adalah beberapa makro yang telah ditentukan dalam pemrograman C.

Makro Nilai
__DATE__ Sebuah string berisi tanggal saat ini
__FILE__ Sebuah string yang berisi nama file
__LINE__ Integer yang mewakili nomor baris saat ini
__STDC__ Jika mengikuti standar ANSI C, maka nilainya adalah bilangan bulat bukan nol
__TIME__ Sebuah string berisi tanggal sekarang.

Contoh 3: Dapatkan waktu saat ini menggunakan __TIME__

Program berikut mengeluarkan waktu saat ini dengan menggunakan __TIME__makro.

 #include int main() ( printf("Current time: %s",__TIME__); )

Keluaran

 Waktu saat ini: 19:54:39

Bacaan yang Direkomendasikan

  • Kontrol garis
  • Pragmas
  • Keluaran Praprosesor
  • Arahan lainnya

Artikel yang menarik...