Kamis, Juni 25, 2020

Variabel panjang argumen untuk Makro

Seperti hal nya sebuah fungsi, variabel juga dapat melewatkan panjang argumennya ke makros. Untuk dapat melakukan perintah tersebut maka digunakan identifier preprosesor.

Untuk mendukung panjang argumen variabel pada makro, maka perlu disertakan '(...)' pada definisi makro. Juga terdapat identifier preprosesor "_VA_ARGS_" yang akan mengelola subtitusi panjang argumen variabel yang disediakan pada makro. Operator '##' (atau operator paste) juga digunakan untuk menggabungkan argumen variabel.

Pada contoh akan akan disediakan makro mengambil argumen panjang nilai seperti fungsi "printf()". Makro ini berfungsi untuk error loging. Makro akan mencetak nama file diikuti baris angka, dan terakhir akan mencetak pesan atau info error. Argumen pertaman "prio" menentukan perioritas dari pesan, atau apakah informasi yang dikirim error atau tidak, "stream" adalah "standard output" atau "standar error" yang akan menampilkan pesan stdout dan pesan error pada stderr stream.



Setelah program dikompilasi dan dijalankan, maka akan menghasilkan pesan berikut ini.

  [narendra@/media/partition/GFG]$ ./variable_length 
  [ERR] : variable_length.c : 26 : Failed to open file 
  [INFO] : variable_length.c : 27 : Hello Geeks for Geeks 
  [INFO] : variable_length.c : 28 : 10 + 20 = 30 
  [narendra@/media/partition/GFG]$





Tidak ada komentar:

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D