Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C Praprosesor dan Makro

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 Anda sebelum dikompilasi. Transformasi ini dapat berupa penyertaan file header, ekspansi makro, dll.

Semua arahan prapemrosesan dimulai dengan # simbol. Misalnya,

#define PI 3.14

Beberapa penggunaan umum dari C preprocessor adalah:


Termasuk File Header:#include

#include preprocessor digunakan untuk memasukkan file header ke program C. Misalnya,

#include <stdio.h>

Di sini, stdio.h adalah file header. #include direktif preprocessor menggantikan baris di atas dengan isi stdio.h file header.

Itulah alasan mengapa Anda perlu menggunakan #include <stdio.h> 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 direktif praprosesor 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 mendefinisikan makro dalam C menggunakan #define arahan praprosesor.

Ini contohnya.

#define c 299792458  // speed of light

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


Contoh 1:#define praprosesor

#include <stdio.h>
#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 pemanggilan fungsi. Ini dikenal sebagai makro seperti fungsi. Misalnya,

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

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

Misalkan, kita melewati 5 sebagai argumen, maka akan berkembang seperti di bawah ini:

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

Contoh 2:Menggunakan praprosesor #define

#include <stdio.h>
#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 praprosesor.


Kompilasi Bersyarat

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

Ini mirip dengan if pernyataan dengan satu perbedaan utama.

if pernyataan diuji selama waktu eksekusi untuk memeriksa apakah blok kode harus dieksekusi atau tidak sedangkan, kondisional digunakan untuk memasukkan (atau melewati) blok kode dalam program Anda sebelum eksekusi.


Penggunaan Bersyarat

  • gunakan kode yang berbeda tergantung pada mesin, sistem operasi
  • kompilasi file sumber yang sama dalam dua program berbeda
  • untuk mengecualikan kode tertentu dari program tetapi menyimpannya sebagai referensi untuk tujuan di masa mendatang

Bagaimana cara menggunakan kondisional?

Untuk menggunakan kondisional, #ifdef , #if , #defined , #else dan #elif direktif digunakan.


#ifdef Arahan

#ifdef MACRO     
   // conditional codes
#endif

Di sini, kode kondisional disertakan dalam program hanya jika MACRO didefinisikan.


#if, #elif dan #else Directive

#if expression
   // conditional codes
#endif

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

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

#else opsional direktif dapat digunakan dengan #if arahan.

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

Anda juga dapat menambahkan kondisional bersarang ke #if...#else . Anda menggunakan #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

#didefinisikan

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

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

Makro yang telah ditentukan

Berikut adalah beberapa makro yang telah ditentukan sebelumnya dalam pemrograman C.

Makro Nilai
__DATE__ String yang berisi tanggal saat ini
__FILE__ 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__ String yang berisi tanggal saat ini.

Contoh 3:Dapatkan waktu saat ini menggunakan __TIME__

Program berikut menampilkan waktu saat ini menggunakan __TIME__ makro.

#include <stdio.h>
int main()
{
   printf("Current time: %s",__TIME__);   
}

Keluaran

Current time: 19:54:39

Bacaan yang Direkomendasikan

  • Kontrol jalur
  • Pragma
  • Keluaran Praprosesor
  • Petunjuk lainnya

Bahasa C

  1. Ringkasan R, L dan C
  2. C# Kata Kunci dan Pengidentifikasi
  3. C# Kelas dan Objek
  4. C# kelas abstrak dan metode
  5. C# Kelas Parsial dan Metode Parsial
  6. C# kelas dan metode tersegel
  7. Arahan C# Preprocessor
  8. C Kata Kunci dan Pengidentifikasi
  9. C - Konstanta dan Literal
  10. C - Masukan dan Keluaran