将BOOST_LOG_SEV宏换成另一个宏

时间:2015-07-31 09:56:03

标签: c++ visual-c++ boost metaprogramming

尝试将BOOST_LOG_SEV宏包装到LOG_SS_BOOST:

#define LOG_SS_BOOST (value) do { BOOST_LOG_SEV (lg,boost::log::trivial::debug)<<value; } while (0)

但编译时出错:

Error   58  error C2065: 'value' : undeclared identifier    
Error   59  error C2143: syntax error : missing ';' before 'do' 
Error   60  error C2065: 'value' : undeclared identifier    
Error   61  error C2143: syntax error : missing ';' before '('  

有什么问题以及如何以正确的方式包装它?

1 个答案:

答案 0 :(得分:0)

你应该在宏参数之前删除空格,即:

#define LOG_SS_BOOST(value) do { BOOST_LOG_SEV (lg,boost::log::trivial::debug)<<value; } while (0)