我有一個要求類似問題有關編譯時代碼生成
void doSomeThing(int x)
{
.....
}
void fun()
{
#ifdef XXXX_1_YYYY
doSomeThing(XXXX_1_YYYY);
#endif //XXXX_1_YYYY
#ifdef XXXX_2_YYYY
doSomeThing(XXXX_2_YYYY);
#endif //XXXX_2_YYYY
#ifdef XXXX_3_YYYY
doSomeThing(XXXX_3_YYYY);
#endif //XXXX_3_YYYY
#ifdef XXXX_4_YYYY
doSomeThing(XXXX_4_YYYY);
#endif //XXXX_4_YYYY
....
upto XXXX_20_YYYY
}
反正我有可以使用一些宏擴展技術或任何其他解決方案減少這種打字高達20?
宏定義可以是這樣的
#define XXXX_1_YYYY 10
#define XXXX_2_YYYY 20
#define XXXX_3_YYYY 30
#define XXXX_4_YYYY 40
...
#define XXXX_20_YYYY 200
每個#ifdef
的不是相互排斥的。 代碼是在C++
更多信息plz,你想要做什麼? – matt 2010-07-29 07:14:52
這就是Boost的'c'版本嗎? – 2010-07-29 07:22:09
@威爾迪恩:好的,也許這裏沒有c verison,但是你可能只是複製粘貼所有預處理器的東西......它的預處理器是相同的嗎?其次,這個問題的原始標籤只是'宏''模板'我要說些什麼,不知道爲什麼這個人改變了它......所以是的,我敢肯定他使用C++ – matt 2010-07-29 07:32:12