推 littleshan:我覺得問題是出在 C 的語法允許string literal接在一起05/20 21:02
→ littleshan:其它語言就會吐 error 出來了05/20 21:03
我看過比較「勉強」的用法是這樣,下面舉個小例
#include <stdio.h>
#define SHOW
#define N 100
int main()
{
int n=0;
do{
printf("guess a number n"
#ifdef SHOW
"(ans=%d):",N
#else
":"
#endif
);
scanf("%d\n", &n);
}while(n!=N);
return 0;
}
實際上 #if-#else 會更雜,
看完上面這種 code 會很無奈,不知道是不是我太嫩,
而且怕改過放回去的時候會被罵幹嘛改別人這種地方 XD
#ifdef SHOW
printf("guess a number n(ans=%d):", N);
#else
printf("guess a number:");
#endif
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.73.222
推 scwg:同意你的改法.. 不過string literal concatenation在寫macro 05/21 08:26
→ scwg:的時候很方便 05/21 08:26
→ angleevil:我的看法是,一個逗號就換行,或著是""就換行 05/21 15:30
→ angleevil:= =有時後加入太多macro,反而不容易維護,尤其是我這種 05/21 15:31
→ angleevil:新手 05/21 15:32
→ hilorrk:用macro寫metaprogramming 看起來就更不像C了 05/22 01:19