【问题标题】:#pragma warning(default: all)#pragma 警告(默认值:全部)
【发布时间】:2013-01-10 12:59:56
【问题描述】:

有没有简单的方法可以做到这一点?

#pragma warning(default: all)

这是无效的;我可以给出一个特定的警告编号而不是 all,这会将那个警告恢复为默认值,但我想将 all 警告恢复为默认值。我不想写出所有警告的长列表!

我的目标是确保我的代码能够干净地编译,并且我不会不小心在我自己的代码中隐藏任何可能在其他地方被禁用的警告。

假设这是在一个巨大的代码库中,其他程序员在我包含但不控制的标头(包括预编译的标头)中以及在项目设置中或通过命令行禁用了警告。

【问题讨论】:

    标签: visual-c++ compiler-warnings pragma


    【解决方案1】:

    http://msdn.microsoft.com/en-us/library/2c8f766e(v=vs.110).aspx

    恐怕您可能已经看过上面的参考资料了。但是,我的建议是使用警告杂注的推送/弹出功能:

    #pragma warning(push) // The very beginning of your code
    #include <...>
    #pragma warning(pop)
    
    // Your code
    ...
    

    push 可以让你保存当时的每一个警告状态,pop 恢复到原来的状态。

    【讨论】:

    • 我认为这不能正常工作;例如,如果在预编译的标头中禁用了警告。至少在 Visual C++ 中,没有办法在包含 PCH 之前放置 #pragma warning(push)。我会将该信息添加到问题中。
    • 很简单。您可以为某些要控制的文件禁用 PCH。在编译时间较长的情况下,您甚至可以创建多个 PCH。使用覆盖的警告设置为 PCH 创建一个标头和一个 cpp 文件。更改 /Yc 和 /Yu 等文件的 PCH 设置。
    • 这行得通,是的,但这绝对比列出我想要启用的所有警告更费力,这也行得通。我所追求的是一种比列出所有警告更省力的方法,但我想它根本不存在!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多