Is there a way to disable all warnings with a pragma?

前端 未结 4 1097
遇见更好的自我
遇见更好的自我 2020-12-14 05:44

I\'ve started a new project and have decided to make sure it builds cleanly with the /Wall option enabled. The only problem is not all 3rd party libraries (like boost) compi

相关标签:
4条回答
  • 2020-12-14 06:23

    Using the technique described in the Assaf Lavie's answer it is possible to create helper macros:

    #define DISABLE_ALL_WARNINGS_BEGIN \
        __pragma(warning(push, 0))
    
    #define DISABLE_ALL_WARNINGS_END \
        __pragma(warning(pop))
    

    They can be used in the following way (online demo):

    DISABLE_ALL_WARNINGS_BEGIN
    void foo(int a)
    {
        // this function should generate the following warning
        // "warning C4100: 'a': unreferenced formal parameter"
        // unless it is wrapped inside "DISABLE_ALL_WARNINGS" section
    }
    DISABLE_ALL_WARNINGS_END
    
    0 讨论(0)
  • 2020-12-14 06:25

    What I've done before is set the "W3" option rather than "Wall" then in each of my own source .cpp files I put

    #pragma warning(push, 4)
    

    at the top AFTER all the "#include..." lines and then

    #pragma warning(pop)
    

    as the very last line of the file.

    This way you get level 4 warnings in your code and level 3 in 3rd party code that you can't do anything about.

    0 讨论(0)
  • 2020-12-14 06:26

    You can push/pop a low level of warning, like this:

    #pragma warning(push, 0)        
    
    #include <boost/bind.hpp>
    #include <boost/shared_ptr.hpp>
    // ...
    
    #pragma warning(pop)
    

    But know that it's not possible to disable all warnings. For example, some linker warnings are impossible to turn off.

    0 讨论(0)
  • 2020-12-14 06:38
    #pragma warning(disable:4820)
    #pragma warning(disable:4619)
    #pragma warning(disable:4668)
    

    for less lines....

    #pragma warning (disable : 4820 4619 4668)
    
    0 讨论(0)
提交回复
热议问题