2010-04-01 116 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__)