Kekurangan umum dari makro pada bahasa c dan c++ adalah argumen diperiksa sangat ketat. Namun, berbeda dengan yang makro dapat beroperasi pada tipe dari berbagai variabel berbeda tanpa harus diperiksa.
Output:
eeks 11
Meskipun penggunaan makro perlu dihidari. Tetapi setelah implementasi dari standard C11 pada bahasa c, maka makro dapat digunakan dengan bantuan dari keyword new "_Generic". Dapat dilakukan pendefinsian makro untuk tipe-tipe data berbeda. Contoh, makro INC(X) diterjemahkan ke INCI(X), INC(X) atau INCf(X) tergantung pada tipe data dari x:
#define INC(x) _Generic((x), long double: INCl, \
default: INC, \
float: INCf)(x)
Contoh:
Output:
Catatan: jika menjalankan kompilator C11 maka nilai keluaran adalah sebagai berikut.
3
0
3
Output:
2
0
amiiinn
BalasHapus