2010-04-01 78 views
1

如果我要触发我的翻译错误我调用该函数:C++错误信息的输出格式

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

什么是'Error'功能?请给我一些代码。示例使用... – 2010-04-01 08:29:19

+0

错误(ErrorType类型,ErrorSeverity严重性,const char * msg,int line); – sub 2010-04-01 08:44:50

回答

4

这是C++,因此您可以使用额外的参数重载您的函数以提供变量名称。然后我会使用std :: stringstream来格式化消息。报告错误时无需担心“效率”,因为它们应该很少,并且不会影响应用程序的整体性能。

+0

很好的答案,谢谢。 – sub 2010-04-01 08:45:36

0

使用在您的错误函数上分支的宏来构建您的消息。

例如:

#define ERROR(var, msg) error(0, 1, #var " -> " msg, __LINE__) 
#define WARNING(var, msg) error(0, 2, #var " -> " msg, __LINE__)