понедельник, 18 апреля 2011 г.

#pragma message + __LINE__

Проблема

Необходимо вывести сообщение во время компиляции с указанием номера строки в исходном файле:
#pragma message(__FILE__ " (" __LINE__ "): Some important message.")
Данный код генерирует ошибку:
warning C4081: expected ')'; found 'constant'
Решение

Дело в том что __LINE__ имеет целочисленный тип, а данная директива принимает только строки. Для того что-бы всё работало как нужно, следует использовать следующий приём:
#define STRING2(x) #x
#define STRING(x) STRING2(x)

#pragma message(__FILE__ " (" STRING(__LINE__) "): Some important message.")

Комментариев нет:

Отправить комментарий