Вставка токена и __LINE__
Я пишу простой макрос, чтобы показать информацию TRACE.
Это то, что ям использую,
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"##(__LINE__) "Function: " __FUNCTION__ " " );}
#else
#define TRACE
#endif
Это работает сФАЙЛ, но это не таккажется, работает сЛИНИЯ Любая идея, как я мог справиться с этим. Я уже пробовал оператор струн тоже. Что ниже.
#ifdef __DEBUG__
#define TRACE { PrintErrorMsg("Trace exception at " __FILE__ "LineNo:"#(__LINE__) "Function: " __FUNCTION__ " " );}
#else
#define TRACE
#endif
и без пармса и с двойным пармсом, экс -__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
--Заранее спасибо--