宏定义 两头加上( ) 怎么还编译错误了呢?如下:
#define PRINT_ELEMENTS(a)\
for_each(a.begin(),a.end(),[](auto val){cout<<val<<” “;}); cout<<endl
这样写是编译通过,但是下面那样就是错误的,为什么啊?
#define PRINT_ELEMENTS(a)\
(for_each(a.begin(),a.end(),[](auto val){cout<<val<<” “;}); cout<<endl)
宏使用:
vector<int> coll;
…
PRINT_ELEMENTS(coll);
#define PRINT_ELEMENTS(a)\
for_each(a.begin(),a.end(),[](auto val){cout<<val<<” “;}); cout<<endl
这样写是编译通过,但是下面那样就是错误的,为什么啊?
#define PRINT_ELEMENTS(a)\
(for_each(a.begin(),a.end(),[](auto val){cout<<val<<” “;}); cout<<endl)
宏使用:
vector<int> coll;
…
PRINT_ELEMENTS(coll);
解决方案
40
原因是有for,是语句,所以不能加(),可以改加花括号{}