c++visual-studiocompiler-warningspragma

Intentional compiler warnings for Visual C++ that appear in Error List?


How can you create a compiler warning (in the model of #error, except as a warning) on purpose in Visual C++ that will show up on the Error List with the correct file and line number?

GCC and other compilers offer #warning, but the MSVC compiler does not.

The "solution" at http://support.microsoft.com/kb/155196 does not parse in the Visual Studio error list.


Solution

  • Just add this to your common include file (ex, 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)
    

    Use this like:

    #pragma VSWARNING("Is this correct?!?!")
    

    The compiler will output:

    c:\dir\file.h(11) : warning W0000: #pragma VSWARNING: Is this correct?!?!
    

    And the Error List tab will show the warning nicely in the table:

    Type       Num   Description                                             File    Line
    [Warning]  13    warning W0000: #pragma VSWARNING: Is this correct?!?!   file.h  11
    

    exactly like a normal Visual Studio compiler warning.