8

如何在 Visual C++ 中故意创建编译器警告(在 #error 模型中,作为警告除外),它会以正确的文件和行号显示在错误列表中?

GCC 和其他编译器提供#warning,但 MSVC 编译器不提供。

http://support.microsoft.com/kb/155196上的“解决方案”不会在 Visual Studio 错误列表中解析。

4

2 回答 2

11

只需将其添加到您的常用包含文件(例如,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 编译器警告完全一样。

于 2010-07-02T03:00:35.110 回答
1

这是对您的问题的一种愚蠢的回答,但是通常,如果我需要添加故意警告,我会输入以下内容:

#pragma asdfkljasdlfjasklfjklasjdfklj

它发出Unknown Pragma行号和所有警告。

于 2010-07-02T03:48:43.897 回答