Подтвердить что ты не робот

Добавить мое собственное предупреждение о компиляторе

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

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

4b9b3361

Ответ 1

В Visual Studio,

#pragma message ("Warning goes here")

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

#pragma warning( disable : 4996)

Ответ 2

Несмотря на отсутствие стандартной директивы #warning, многие компиляторы (включая GCC, VC, Intels и Apples) поддерживают #warning message.

#warning "this is deprecated"

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

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

Ответ 3

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

__declspec(deprecated) void f();

Ответ 4

В 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("")

Ответ 6

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

void foo () __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README")));