Code Bye

宏定义 加上( ) 编译不过

宏定义 两头加上( ) 怎么还编译错误了呢?如下:
#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,是语句,所以不能加(),可以改加花括号{}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明宏定义 加上( ) 编译不过