Вставка токена и __LINE__C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вставка токена и __LINE__

Сообщение Anonymous »

Я пишу простой макрос для отображения информации 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
и без параметров и с двойными параметрами, например - __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
#endif
Но я хочу сделать это без использования sprintf, просто путем вставки строк и токенов.


Подробнее здесь: https://stackoverflow.com/questions/133 ... g-and-line
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»