如果我想在我的解释器中触发错误,我可以调用此函数:
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将不起作用。
答案 0 :(得分:4)
这是C ++,因此您可以使用额外的参数重载您的函数以提供变量名称。然后我会使用std :: stringstream来格式化消息。报告错误时无需担心“效率”,因为它们应该很少见,并且不会影响应用程序的整体性能。
答案 1 :(得分:0)
在构建消息的错误函数上使用宏分支。
示例:
#define ERROR(var, msg) error(0, 1, #var " -> " msg, __LINE__)
#define WARNING(var, msg) error(0, 2, #var " -> " msg, __LINE__)