Добавить мое собственное предупреждение о компиляторе
При использовании sprintf компилятор предупреждает меня, что функция устарела.
Как я могу показать свое собственное предупреждение о компиляторе?
Ответы
Ответ 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("")
Ответ 5
Как использовать сообщение #pragma для генерации пользовательских предупреждающих сообщений в Visual С++
Ответ 6
Я думаю, это должно сработать
void foo () __attribute__ ((deprecated("This function is deprecated. \nFor further information please refer to the README")));