Предупреждения компилятора


Предупреждения компилятора (Compiler warnings) – это сообщения компилятора о подозрительных местах в программе, которые могут содержать ошибки. В отличие от ошибок компиляции, предупреждения не прерывают процесс компиляции программы. Они не являются ошибками с точки зрения языка программирования, но могут быть программными ошибками. Впрочем, многие компиляторы можно настроить так, что бы предупреждения останавливали процесс компиляции.

Предупреждения не стоит игнорировать. Лучше исправить возможные ошибки еще до начала тестирования программы. Можно долго и упорно искать ошибку в отладчике, хотя про нее явно сообщает компилятор в одном из предупреждений. Следует стараться, чтобы при работе с проектом все предупреждения были устранены или их было минимальное количество. Чем меньше предупреждений, тем легче заметить ошибку в новом коде.

Различные компиляторы выдают свои предупреждения, основываясь на статическом анализе кода, выполняемом на этапе компиляции. Поэтому предупреждения, выдаваемые MSVC и GCC или Clang, могут различаться. К сожалению, компилятор не в силах провести полноценный анализ, поскольку компиляция должна выполняться быстро. Поэтому для поиска более сложных ошибок в программе лучше воспользоваться специализированными инструментами статического анализа кода.

В MSVC можно управлять выдачей предупреждений, используя директиву '#pragma warning'. Так если компилятор выдает предупреждение на вполне корректный код или такой код находится в библиотеке, то можно подавить вывод предупреждения, используя директиву '#pragma warning (disable : X)', где 'X' – номер предупреждения. Что бы отключить вывод предупреждения в конкретном месте программы, можно сделать так:

#pragma warning(push)
#pragma warning(disable : X)
....корректный код, выдающий предупреждение X.... 
#pragma warnin(pop)

Библиографический список


Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;