Формат вывода сообщений об ошибках C ++ - PullRequest
1 голос
/ 01 апреля 2010

Если я хочу вызвать ошибку в моем интерпретаторе, я вызываю эту функцию:

Error( ErrorType type, ErrorSeverity severity, const char* msg, int line );

Однако, с этим я могу только вывести

Name error: Undefined variable in line 1

вместо

Name error: Undefined variable 'someVariableName' in line 1

Я работаю полностью со строками (за исключением сообщений об ошибках, так как они все постоянны в данный момент), поэтому sprintf не будет работать.

  • Каков наилучший способ создать эффективную функцию ошибки, которая может выводить постоянное сообщение в сочетании со строкой, которая описывает, какой объект, например: несуществующая переменная, вызвал ошибку?

Ответы [ 2 ]

4 голосов
/ 01 апреля 2010

Это C ++, поэтому вы можете перегрузить свою функцию дополнительным параметром, чтобы предоставить имя переменной. Затем я бы использовал std :: stringstream для форматирования сообщения. При сообщении об ошибках не нужно беспокоиться об «эффективности», поскольку они должны быть редкими и не влиять на общую производительность приложения.

0 голосов
/ 01 апреля 2010

используйте макрос, разветвленный в вашей функции ошибок, который создает ваше сообщение.

пример:

#define ERROR(var, msg) error(0, 1, #var " -> " msg, __LINE__)
#define WARNING(var, msg) error(0, 2, #var " -> " msg, __LINE__)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...