c++ - 出现在错误列表中的 Visual C++ 的故意编译器警告?

标签 c++ visual-studio compiler-construction compiler-warnings pragma

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

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 编译器警告。

关于c++ - 出现在错误列表中的 Visual C++ 的故意编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163017/

相关文章:

c# - 当前的 .NET SDK 不支持面向 .NET Core 2.2。 (SDK 2.2.202)

visual-studio - 如何在 Visual Studio 2012 中更改 ipch 路径

c# - Visual Studio 2010基于目标框架的编译条件

java - 在 ndk{} 中使用 moduleName 时如何设置 JNI 依赖?

c++ - 在两个相同基类的多重继承中,如何将其转换为其中一个

.net - System.Reactive dll 丢失

c++ - "true;"或 "10;"语句在 C++ 中意味着什么?如何使用它?

testing - 测量 Javacc 解析器性能

c++ - 将函数指针实现替换为 std::function 以在 PlayFab SDK 中使用 lambda

c++ - 带有 RAII 的 std::mutex 但在后台线程中完成并释放