Daniel Baktiar wrote: > intinya macro ini dapat digunakan untuk menyederhanakan penulisan -- > tidak berhubungan dengan isu efisiensi. > tetapi ada juga kekurangannya, karena dengan menggunakan macro lebih > sulit untuk melakukan debugging jika menggunakan step / breakpoint,
Betul. Selain itu side effects-nya perlu diperhatikan. Contoh: #define MYMACRO(a, b) a + a * b int main() { printf("Result: %d\n", MYMACRO( 5 , 3) ); printf("Result: %d\n", MYMACRO( 2+3 , 3) ); } Yang pertama hasil-nya: 20. printf kedua hasilnya 16. Kenapa? Coba lihat statement yang di-generate oleh preprocessor dengan: gcc -E filename.c # 1 "a.c" # 1 "<built-in>" # 1 "<command line>" # 1 "a.c" int main() { printf("Result: %d\n", 5 + 5 * 3 ); printf("Result: %d\n", 2+3 + 2+3 * 3 ); } > karena tidak jelas bagian source code mana yang menghasilkan breakpoint > (pada hasil kompilasi macro telah di-expand, sedang pada source code > tidak). jadi macro sebaiknya digunakan untuk mempermudah pembacaan dan > untuk portabilitas (digabungkan preprocessor dengan #ifdef / #define / > #undef / etc.), tetapi jangan over-use. Setuju. Reading-nya juga bisa lebih sulit. Tetapi, macro merupakan suatu tool yang sangat berguna jika digunakan secara hati-hati. Kannel project menggunakan macro preprocessor trick untuk mendefinisikan PDU. Lars Wirzenius menulis artikel yang sangat bagus ttg hal ini; dapat dilihat di: http://liw.iki.fi/liw/texts/cpp-trick.html -- Rachman Chavik email: [EMAIL PROTECTED] email: [EMAIL PROTECTED] email: [EMAIL PROTECTED] www: http://www.chavik.com -- Berhenti langganan: [EMAIL PROTECTED] Arsip dan info: http://linux.or.id/milis