最近我發現,我已經用我的預處理下面的代碼開始:C++預處理器__typeof
#define FOREACH(i,s) for(VAR(i,(s).begin()); i != (s).end(); i++)
#define VAR(a,b) __typeof(b) a=(b)
是什麼讓我的迭代更加容易。但不幸的是,我不完全理解第二行,特別是關鍵字__typeof
(以及爲什麼使用這兩個下劃線)。我還假定整個表達式__typeof(b)
是一種類型轉換,但是當我將它放在括號中時,爲什麼它不起作用?
」最近我找到了,我已經開始在我的預處理器中使用下面的代碼「現在應該是停下來的好時機。使用宏來混淆控制語句是一個非常糟糕的主意。 – 2012-01-10 20:37:55
已經給出了很好的答案,我想補充一點,你現在不應該使用所有這些東西,用C++ 11,當你可以使用基於範圍的時候 - http://en.wikipedia.org/wiki/C%2B%2B11#基於範圍的循環 – Lol4t0 2012-01-10 20:44:42
事實上,這個range_based-for(類似於Java)將解決這個問題。我知道對於其他人來說,這樣的代碼並不清晰,但它可以幫助我保持代碼更加透明(當然,只有在我自己使用程序時才使用這些宏) – JosephConrad 2012-01-10 21:03:32