如何打印#define 语句?
如何让 cerr
打印 5
5
5
5
5
5 < 6
而不是 statement_
?我可以访问 Boost 和 Qt。
using namespace std;
#define some_func( statement_ ) \
if( ! statement_ ) \
{ \
throw runtime_error( "statement_" ); \
} \
int main()
{
try
{
some_func( 5 < 6 );
}
catch(std::exception& e)
{
cerr << e.what();
}
}
How can I get cerr
to print 5 < 6
as opposed to statement_
? I have access to Boost and Qt.
using namespace std;
#define some_func( statement_ ) \
if( ! statement_ ) \
{ \
throw runtime_error( "statement_" ); \
} \
int main()
{
try
{
some_func( 5 < 6 );
}
catch(std::exception& e)
{
cerr << e.what();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用 stringize 运算符:
如果
statement_
可能是宏,则您需要使用 双字符串化技巧。You need to use the stringize operator:
If
statement_
may be a macro, you'll want to use the double stringize trick.哦,我找到了这个。
这是最终的工作代码=):
Oh, I found this.
and here's the final working code =):