如何创建一个编译器警告(在#ERROR的模型,但是作为警告)在Visual C++的目的,这将显示在用正确的文件和行号的错误列表?出现在错误列表中的Visual C++的故意编译器警告?
GCC和其他编译器提供#warning后,但MSVC编译器不。
的“解决方案”在http://support.microsoft.com/kb/155196不会在Visual Studio错误列表解析。
如何创建一个编译器警告(在#ERROR的模型,但是作为警告)在Visual C++的目的,这将显示在用正确的文件和行号的错误列表?出现在错误列表中的Visual C++的故意编译器警告?
GCC和其他编译器提供#warning后,但MSVC编译器不。
的“解决方案”在http://support.microsoft.com/kb/155196不会在Visual Studio错误列表解析。
只需添加到您的常见的包括文件(例如,stdafx.h中):
#define __STR2__(x) #x
#define __STR1__(x) __STR2__(x)
#define __LOC__ __FILE__ "("__STR1__(__LINE__)") : warning W0000: #pragma VSWARNING: "
#define VSWARNING(x) message(__LOC__ x)
使用此类似:
#pragma VSWARNING("Is this correct?!?!")
编译器将输出:
c:\dir\file.h(11) : warning W0000: #pragma VSWARNING: Is this correct?!?!
错误列表选项卡将在表格中很好地显示警告:
Type Num Description File Line
[Warning] 13 warning W0000: #pragma VSWARNING: Is this correct?!?! file.h 11
完全像一个正常的Visual Studio编译器警告。
我使用了类似的实现这个(我张贴[在回答另一个问题(http://stackoverflow.com/questions/2703528/what-code-have-you-written-with-pragma-你发现的,有用/ 2706693#2706693))。我没有意识到,Visual C++会宏替换编译指示的文本;这非常酷。 – 2010-07-02 03:08:44
在相关说明中,您还可以在输出文本中使用“错误”而不是“警告”;这会导致编译失败(如#错误),但允许编译继续到翻译单元的末尾(这在某些情况下非常有用)。 – 2010-07-02 03:13:09
这是一种愚蠢的回答你的问题,但往往,如果我需要添加一个故意的警告,我会键入类似:
#pragma asdfkljasdlfjasklfjklasjdfklj
其发出Unknown Pragma
行号和所有警告。
不过,它不会在编译器输出和错误列表中输出实际的消息。只出现“未知的杂注”。 – Thomas 2010-07-02 04:21:15
看起来,你是感到困惑,究竟是堆栈溢出。 – Juliano 2010-07-02 03:05:25
这是一个S.O.有点问题。我也想知道别人会做得更好。 – Thomas 2010-07-02 03:07:35
@Juliano:你对这个问题有什么不满意的地方?这绝对是主题和有趣的。它可能是重复的,但我找不到重复的问题。 – 2010-07-02 03:10:58