C++ 如何打印#define语句?

C++ 如何打印#define语句?,c++,macros,c-preprocessor,stringification,C++,Macros,C Preprocessor,Stringification,如何让cerr打印5

如何让
cerr
打印
5<6
而不是
语句
?我可以使用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();
  }
}
使用名称空间std;
#定义一些函数(语句)\
如果(!语句u3;)\
{                                           \
抛出运行时错误(“语句”)\
}                                           \
int main()
{
尝试
{
一些函数(5<6);
}
捕获(标准::异常&e)
{
哦,我发现了

这是最后的工作代码=):

#包括
#包括
#定义一些函数(语句)\
如果(!语句u3;)\
{                                          \
throw std::runtime_错误(#statement_u)\
/*注:#,无引号!^^^^^*/\
}                                          \
int main(int argc,字符**argv)
{
尝试
{
一些函数(5<6);
}
捕获(标准::异常&e)
{
哦,我发现了

这是最后的工作代码=):

#包括
#包括
#定义一些函数(语句)\
如果(!语句u3;)\
{                                          \
throw std::runtime_错误(#statement_u)\
/*注:#,无引号!^^^^^*/\
}                                          \
int main(int argc,字符**argv)
{
尝试
{
一些函数(5<6);
}
捕获(标准::异常&e)
{

std::cerr您需要使用stringize操作符:

throw runtime_error(# statement_);

如果
语句
可能是宏,则需要使用。

您需要使用stringize操作符:

throw runtime_error(# statement_);
如果
语句
可能是宏,则需要使用