看板 C_and_CPP 關於我們 聯絡資訊
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