我试图实施一个简单的ScopeGuard并遇到这个问题。
以下是代码:
的main.cpp
#define ON_SCOPE_EXIT(callback)
int main()
{
int a,b;
//this works well
ON_SCOPE_EXIT([a]{});
//fail to compile (actually preprocessor fails)
ON_SCOPE_EXIT([a,b]{});
return 0;
}
```
编译: g ++ main.cpp -std = c ++ 11 -o test
编译器说:
main.cpp:14:26:错误:宏" ON_SCOPE_EXIT"通过2个参数,但是 只需1 ON_SCOPE_EXIT([A,B] {}); ^ main.cpp:在函数'int main()'中:main.cpp:14:5:错误:在此范围内未声明'ON_SCOPE_EXIT' ON_SCOPE_EXIT([A,B] {});
我的g ++版本是g ++(GCC)4.8.5 20150623(Red Hat 4.8.5-4)。 但是,它也适用于g ++ 5.4.0。