gcc (GCC) 4.7.2
c89
你好,函數宏與宏
我一直在尋找一個測試套件,我注意到這個函數宏聲明如下:
#define MU_SUITE_START() char *msg = NULL
然而,沒有任何真正的區別在做只是這個:
#define MU_SUITE_START char *msg = NULL
宏只是做文本替換,所以我不認爲有將是任何性能問題。
使用CPP,我得到以下結果,因此這裏沒有什麼特別。
函數宏
char *msg = __null;
馬爾科
char *msg = __null;
只是一個側面說明:是不是值得聲明函數樣的馬可,不輸入參數提供? 在這裏我不傳遞任何參數 即
#define PRINT_MSG() printf("This is the message\n")
爲什麼用函數宏打擾,如果沒有輸入參數,是不是這更好的?
#define PRINT_MSG printf("This is the message\n")
非常感謝您的任何建議,
部分是可讀性。如果它要表現得像一個函數,爲什麼不使它看起來像一個呢? – Mysticial
如果你要有一個類似於函數的宏,那麼*請*將它包裝在一個'do-while(false)'中,所以我不能這樣做:'unsigned MU_SUITE_START()+ 10000;'實際上等待,在這裏不起作用。更好的建議:不要使用宏。 – Pubby