Добавить мое собственное предупреждение компилятора - PullRequest
24 голосов
/ 27 января 2010

При использовании sprintf компилятор предупреждает меня, что функция устарела.

Как я могу показать свое собственное предупреждение компилятора?

Ответы [ 6 ]

25 голосов
/ 27 января 2010

В Visual Studio ,

#pragma message ("Warning goes here")

В примечании, если вы хотите подавить такие предупреждения , найдите идентификатор предупреждения компилятора (для устаревшего предупреждения это C4996) и вставьте эту строку:

#pragma warning( disable : 4996)

24 голосов
/ 27 января 2010

Хотя стандартного направления #warning не существует, многие компиляторы (включая GCC, VC, Intel и Apple) поддерживают #warning message.

#warning "this is deprecated"

Часто лучше не только вывести предупреждение (которое люди могут пропустить), но и позволить компиляции полностью потерпеть неудачу, используя директиву #error (которая является стандартной):

#if !defined(FOO) && !defined(BAR)
#  error "you have neither foo nor bar set up"
#endif
14 голосов
/ 27 января 2010

Чтобы пометить функцию как устаревшую, используйте __declspec(deprecated), например,

__declspec(deprecated) void f();
10 голосов
/ 06 сентября 2011

В VC, если вы хотите, чтобы предупреждение отображалось в подсчете предупреждений в конце компиляции, вам нужно использовать этот формат:

#pragma message(": warning<put what you like here>: blah blah blah")

Важная последовательность: двоеточие, пробел, «предупреждение», что-то или ничего, двоеточие, «ваш текст предупреждения»

Если вы хотите проявить фантазию, номер файла и строки можно добавить до 1-го двоеточия, чтобы дважды щелкнуть по нему, чтобы перейти к коду (из 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("")
0 голосов
/ 01 февраля 2017

Я думаю, что это должно работать

void foo () __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...