Praprosesor dan Makro

Dalam tutorial ini, anda akan diperkenalkan dengan praprosesor c, dan anda akan belajar menggunakan kompilasi #include, #define dan bersyarat dengan bantuan contoh.

Praprosesor C adalah prapemproses makro (membolehkan anda menentukan makro) yang mengubah program anda sebelum disusun. Transformasi ini boleh merangkumi kemasukan fail header, pengembangan makro dll.

Semua arahan preprocessing bermula dengan #simbol. Sebagai contoh,

 #define PI 3.14

Beberapa kegunaan umum preprocessor C adalah:

Termasuk Fail Header: #include

The #includeprapemproses digunakan untuk memasukkan fail header untuk program C. Sebagai contoh,

 #include 

Di sini, stdio.hadalah fail tajuk. The #includearahan prapemproses menggantikan baris di atas dengan kandungan stdio.hfail header.

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

Anda juga boleh membuat fail header anda sendiri yang mengandungi deklarasi fungsi dan memasukkannya ke dalam program anda menggunakan arahan preprocessor ini.

 #include "my_header.h"

Lawati halaman ini untuk mengetahui lebih lanjut mengenai penggunaan fail tajuk.

Makro menggunakan #define

Makro adalah pecahan kod yang diberi nama. Anda boleh menentukan makro dalam C menggunakan #definearahan preprocessor.

Inilah contohnya.

 #define c 299792458 // speed of light

Di sini, apabila kita menggunakan c dalam program kita, ia digantikan dengan 299792458.

Contoh 1: #tentukan 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 Makro

Anda juga boleh menentukan makro yang berfungsi dengan cara yang serupa seperti panggilan fungsi. Ini dikenali sebagai makro seperti fungsi. Sebagai contoh,

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

Setiap kali program bertemu circleArea(argument), ia digantikan dengan (3.1415*(argument)*(argument)).

Misalkan, kita lulus 5 sebagai argumen, kemudian berkembang seperti di bawah:

 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; )

Lawati halaman ini untuk mengetahui lebih lanjut mengenai makro dan #definisi preprocessor.

Penyusunan Bersyarat

Dalam pengaturcaraan C, anda boleh mengarahkan preprocessor sama ada memasukkan blok kod atau tidak. Untuk melakukannya, arahan bersyarat dapat digunakan.

Ia serupa dengan ifpernyataan dengan satu perbezaan utama.

The ifkenyataan diuji sepanjang masa pelaksanaan untuk memeriksa sama ada satu blok kod perlu dilaksanakan atau tidak sedangkan, yang conditional digunakan untuk memasukkan (atau langkau) satu blok kod dalam program anda sebelum pelaksanaan.

Penggunaan Bersyarat

  • gunakan kod yang berbeza bergantung pada mesin, sistem operasi
  • menyusun fail sumber yang sama dalam dua program yang berbeza
  • untuk mengecualikan kod tertentu dari program tetapi menyimpannya sebagai rujukan untuk tujuan masa depan

Bagaimana menggunakan bersyarat?

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

Arahan #ifdef

 #ifdef MACRO // conditional codes #endif 

Di sini, kod bersyarat dimasukkan dalam program hanya jika MACRO ditentukan.

Arahan #if, #elif dan #else

 #if expression // conditional codes #endif 

Di sini, ungkapan adalah ungkapan jenis integer (boleh berupa bilangan bulat, watak, ungkapan aritmetik, makro dan sebagainya).

Kod bersyarat dimasukkan dalam program hanya jika ungkapan dinilai ke nilai bukan sifar.

#elseArahan pilihan boleh digunakan dengan #ifarahan.

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

Anda juga boleh menambahkan bersarang bersyarat untuk #if… #elsepenggunaan anda#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 

#ditentukan

Pengendali khas #defined digunakan untuk menguji sama ada makro tertentu ditentukan atau tidak. Ia sering digunakan dengan arahan #if.

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

Makro yang telah ditetapkan

Berikut adalah beberapa makro yang telah ditentukan dalam pengaturcaraan C.

Makro Nilai
__DATE__ Rentetan yang mengandungi tarikh semasa
__FILE__ Rentetan yang mengandungi nama fail
__LINE__ Bilangan bulat yang mewakili nombor garis semasa
__STDC__ Sekiranya mengikuti ANSI standard C, maka nilainya adalah integer bukan nol
__TIME__ Rentetan yang mengandungi tarikh semasa.

Contoh 3: Dapatkan masa semasa menggunakan __TIME__

Program berikut menghasilkan masa semasa menggunakan __TIME__makro.

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

Pengeluaran

 Masa sekarang: 19:54:39

Bacaan yang Disyorkan

  • Kawalan talian
  • Pragmas
  • Keluaran Praprosesor
  • Arahan lain

Artikel menarik...