添加我自己的编译器警告

War*_*pin 24 c++ windows visual-c++

使用sprintf时,编译器警告我该函数已弃用.

如何显示自己的编译器警告?

Jac*_*cob 25

Visual Studio

#pragma message ("Warning goes here")

另外,如果要抑制此类警告,请找到编译器警告ID(对于已弃用的警告,它是C4996)并插入以下行:

#pragma warning( disable : 4996)


Geo*_*che 24

虽然没有标准的#warningdirectice,但许多编译器(包括GCC,VC,Intels和Apples)都支持#warning message.

#warning "this is deprecated"
Run Code Online (Sandbox Code Playgroud)

通常最好不仅提出警告(人们可以忽略),而是使用#error指令(标准)让编译完全失败:

#if !defined(FOO) && !defined(BAR)
#  error "you have neither foo nor bar set up"
#endif
Run Code Online (Sandbox Code Playgroud)

  • MSVC++ 2013不支持它. (8认同)

Mar*_*n B 15

要将函数标记为已弃用,请使用__declspec(deprecated),例如

__declspec(deprecated) void f();
Run Code Online (Sandbox Code Playgroud)

  • 或者在c ++ 14中,我们必须使用`[[[deprecated]] void f();` (4认同)
  • 我认为这就是 OP 真正想要的。 (2认同)
  • 他要求显示他自己的警告,而不是特定的*弃用*警告. (2认同)

noe*_*cus 10

在VC中,如果要在编译结束时在警告计数中显示警告,则需要使用以下格式:

#pragma message(": warning<put what you like here>: blah blah blah")
Run Code Online (Sandbox Code Playgroud)

重要的顺序是:冒号,空格,"警告",什么都没有,冒号,"你的警告文字"

如果你想要花哨,那么可以在第一个冒号之前添加文件和行号,这样你就可以双击它来跳转到代码(来自microsoft.com):

// pragma_directives_message1.cpp  
// compile with: /LD  
#if _M_IX86 >= 500  
#pragma message("_M_IX86 >= 500")  
#endif  

#pragma message("")  

#pragma message( "Compiling " __FILE__ )   
#pragma message( "Last modified on " __TIMESTAMP__ )  

#pragma message("")  

// with line number  
#define STRING2(x) #x  
#define STRING(x) STRING2(x)  

#pragma message (__FILE__ "[" STRING(__LINE__) "]: test")  

#pragma message("")
Run Code Online (Sandbox Code Playgroud)