我正在编写一个简单的宏来显示 TRACE 信息。
这就是我正在使用的,
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"##(__LINE__) "Function: " __FUNCTION__ " " );}
#else
#define TRACE
#endif
这适用于FILE,但似乎不适用于LINE,知道我该如何处理。我也已经尝试过穿线运算符。如下所示。
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"#(__LINE__) "Function: " __FUNCTION__ " " );}
#else
#define TRACE
#endif
并且没有 parms 和 double parms ,前 -__LINE__
或((__LINE__))
任何想法我该如何处理这个问题?
我想出了这个,
#ifdef __DEBUG__
#define ERROR_MSG_BUF_SIZE 1024
#define TRACE { char * error_msg_buffer = new char[ERROR_MSG_BUF_SIZE]; \
sprintf(error_msg_buffer,"Trace Exception at file: %s ,Line : %d , Function %s \n",__FILE__,__LINE__,__FUNCTION__);\
PrintErrorMsg(error_msg_buffer );\
delete[] error_msg_buffer;}
#else
#define TRACE
但我想在不使用 sprintf 的情况下做到这一点,只需通过字符串和令牌粘贴即可。任何的想法?
#endif
- 提前致谢 -