以下代碼在由g ++ -std = C++ 11編譯器編譯時失敗。在C++中使用具有不同數量參數的嵌套宏
# include<iostream>
# include<vector>
using namespace std;
# define stlf(x) x.begin(), x.end()
# define repf(it, a, b) for(auto it = a ; it != b ; ++it)
/*
// Also, following alternative fails
# define repf(it, a, b) for(auto it = a ; it != b ; ++it)
# define stlf(x) x.begin(), x.end()
*/
typedef vector<int > vi;
# define pd(x) printf("%d", x);
int main(void){
vi arr(10, -1);
repf(arr, stlf(arr))
pd(arr[i]);
return 0;
}
這究竟是爲什麼?
2.可能已經實現問題的C++預處理器實現者,他們避免了這個功能呢?
3.我該如何使用這種快捷方式?
你應該避免這種「快捷方式」,它會讓別人難以閱讀你的代碼 –