Kamis, Juni 25, 2020

Makro multibaris pada bahasa C

Pada artikel ini akan diceritakan bagaimana cara membuat makro multibaris. Dimana makro multibaris yang akan dibuat sama seperti sebuah fungsi, namun setiap statement-nya akan diakhiri dengan "\". Berikut ditampilkan contoh sederhana sebuah makro yang menerima input angka dari user, dan mencetak pesan apakah angka yang diinput berupa angka ganjil atau genap.


Pada saat pembuatan kode program, hasil yang terlihat adalah normal tidak menampilkan pesan error apapun, tetapi setelah dijalankan maka akan menghasilkan error.

[narendra@/media/partition/GFG]$ make macro
cc     macro.c   -o macro
macro.c: In function ‘main’:
macro.c:19:2: error: ‘else’ without a previous ‘if’
make: *** [macro] Error 1
[narendra@/media/partition/GFG]$ 

Mari perhatikan kesalahan yang terjadi. Makro yang telah dibuat sebelumnya diakhiri dengan tanda "}". Menurut aturan standar bahasa C, setiap statement yang dibuat harus diakhiri dengan tanda ";". Hal inilah kenapa makro yang dibuat diakhiri dengan tanda semicolon. Selanjutnya, perhatikan letak kesalahan pada program yang telah dibuat sebelumnya. 

if (num & 1)
{
    -------------------------
    ---- Macro expansion ----
    -------------------------
};    /* Semicolon at the end of MACRO, and here is ERROR */

else 
{
   -------------------------
   ---- Macro expansion ----
   -------------------------

};

Makro yang telah dibuat diakhiri dengan tanda semicolon ";". Saat kompilator menjalankan makro, maka semicolon akan diletakkan setelah statement "if". Karena terdapat semicolon antara statement "if dan "else" maka kompilator menampilkan pesan error. Namun, program yang dijalankan akan bekerja secara normal, jika "if" mengapaikan statement "else".

Untuk mengatasi keterbatasan tersebut, maka makro dibuat menggunakan statement "do while". Maka hasil modifikasi makro akan diperlihatkan pada contoh program berikut ini.


Ketika program dikompilasi dan dijalankan, maka hasil dari program akan bekerja secara baik.

[narendra@/media/partition/GFG]$ make macro
cc     macro.c   -o macro
[narendra@/media/partition/GFG]$ ./macro 
Enter a number: 9
9 is Odd number
[narendra@/media/partition/GFG]$ ./macro 
Enter a number: 10
10 is Even number
[narendra@/media/partition/GFG]$ 

Dimana telah dilakukan perubahan statement looping menggunakan "do while" pada makro dan dibagian akhir dari while, telah dikondisikan sebagai "while(0)", hal inilah kenapa program hanya dieksekusi sebanyak satu kali.

Juga untuk makro multi baris juga dapat dilakukan dengan cara modifikasi input dari statement "do while" seperti diperlihatkan pada contoh berikut ini:

Output:

[narendra@/media/partition/GFG]$ make macro
cc     macro.c   -o macro
[narendra@/media/partition/GFG]$ ./macro 
Enter a number: 10
10 is Even number
[narendra@/media/partition/GFG]$ ./macro 
Enter a number: 15
15 is Odd number
[narendra@/media/partition/GFG]$ 





Related Posts

Makro multibaris pada bahasa C
Oleh

"semoga yang memberikan komentar diberikan berkah kebaikan dari Allah, dijauhkan dari kejahatan, dan diberikan pahala ilmu dan amal jariyah dari sepenggal kata yang ia tinggalkan amiin :) "