How to suppress warnings in external headers in Visual C++

后端 未结 3 1547
眼角桃花
眼角桃花 2020-12-01 01:35

I\'m starting a new BREW project, and I\'d like to compile with Warning Level 4 (/W4) to keep the application code nice and clean. The problem is that the BREW headers thems

相关标签:
3条回答
  • 2020-12-01 01:43

    Visual C++ team has just added support for warning levels in external headers. You can find the details in their blog post: Broken Warnings Theory.

    In essence it does automatically what the suggestions here were recommending to do manually: pushes new warning level right before #include directive and pops it up right after. There are additional flags to specify locations of external headers, flag to treat all <> includes as external, #pragma system_header and a feature not available in Clang or GCC (as of this writing) to see warnings in external headers across template instantiation stack when the template was instantiated in the user code.

    Besides the comments under that post, you can also find some useful discussion in a reddit announcement for that post.

    0 讨论(0)
  • 2020-12-01 01:49

    I don't believe Visual C++ lets you differentiate. You can fake it by using #pragma warning around the include:

    #pragma warning(push, 0)
    #include "mywarningheader.h"
    #pragma warning(pop)
    
    0 讨论(0)
  • 2020-12-01 02:06

    Only use this method around a block of headers that you cannot change, but that you need to include.

    You can selectively, and temporarily disable all warnings like this:

    #pragma warning(push, 0)        
    //Some includes with unfixable warnings
    #pragma warning(pop)
    

    Instead of 0 you can optionally pass in the warning number to disable, so something like:

    #pragma warning( push )
    #pragma warning( disable : 4081)
    #pragma warning( disable : 4706 )
    // Some code
    #pragma warning( pop ) 
    
    0 讨论(0)
提交回复
热议问题