Конфигурация компилятора: Уровни предупреждений и ошибки



Книга Конфигурация компилятора: Уровни предупреждений и ошибки

В рамках данного занятия мы обсудим методы улучшения уровня предупреждений в компиляторах и научим их обрабатывать предупреждения с такой же серьезностью, как если бы они были ошибками.

Предупреждения в языке С++

В процессе компиляции компилятор проверяет соответствие вашего кода правилам языка C++. Если вы допустили нарушение синтаксиса языка C++, то компилятор выдаст ошибку, указав номер строки, содержащей ошибку, и сообщив о ее содержании. Фактически, ошибка может быть как в этой строке (указанной компилятором), так и в предыдущей строке. После того, как вы обнаружите и исправите ошибки в коде, можно попробовать скомпилировать программу снова.

Иногда возникают ситуации, когда компилятор обнаруживает недочеты в коде, но не уверен в своем решении (помните, что в языке программирования C++ принято доверять программисту!). В таких случаях компилятор может выдать предупреждение. Предупреждения не прерывают процесс компиляции, но информируют программиста о возможных проблемах.

Совет: Не позволяйте предупреждениям накапливаться. Решайте их по мере возникновения (так, как будто бы это были ошибки).

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

Иногда возникает необходимость явно указать компилятору не выводить определенное предупреждение для определенной строки кода. Хотя язык C++ не предоставляет такой функциональности, некоторые компиляторы (например, Visual Studio и GCC) позволяют временно отключить предупреждения с помощью не переносимых директив #pragma.

Обычно большинство компиляторов выдают предупреждения только о самых очевидных проблемах. Но вы можете настроить ваш компилятор так, чтобы он был более внимателен к выдаче предупреждений о тех вещах, которые он считает необычными.

Совет: Сделайте максимальным уровень предупреждений от компилятора (особенно во время обучения). Это поможет вам определить возможные проблемы.

Изменение уровня предупреждений

Пользователям Visual Studio

Для улучшения уровня предупреждений в Visual Studio, выполните щелчок правой кнопкой мыши на названии вашего проекта в разделе "Обозреватель решений" и выберите пункт "Свойства":

Перед началом работы в диалоговом окне проекта убедитесь, что в разделе "Конфигурация" выбрано значение "Все конфигурации". Перейдите на вкладку "C/C++" > "Общие" и установите уровень предупреждений на "Уровень4 (/W4)":

После этого выполните действие "Применить" и подтвердите нажатием кнопки "ОК".

Примечание: Не выбирайте пункт "Включить все предупреждения (/Wall)" , иначе вы будете погребены в предупреждениях, генерируемых Стандартной библиотекой C++.

Пользователям Code::Blocks

Зайдите в раздел "Настройки" > "Компилятор":

На вкладке "Настройки компилятора" > "Флаги компилятора" отметьте флажки напротив следующих элементов:

Посмотрим на это:

Подтвердите действие, нажав кнопку "ОК", после чего перейдите на вкладку "Другие параметры компилятора" и введите следующий текст в поле редактирования: -Wsign-conversion -Werror.

Пожалуйста, нажмите кнопку "Ок".

Примечание: О параметре -Werror мы поговорим чуть позже.

Пользователям GCC/G++

Пожалуйста, включите в вашу строку команд следующие флаги:

Добавлены следующие флаги компилятора: -Wall, -Weffc++, -Wextra, -Wsign-conversion

Обрабатывать предупреждения как ошибки

Также можно настроить компилятор так, чтобы он реагировал на все предупреждения как на ошибки (в этом случае компилятор прервет процесс компиляции, если найдет какие-либо предупреждения). Это отличный способ заставить себя исправить все предупреждения, особенно если у вас не хватает самодисциплины (как, впрочем, у большинства из нас).

Пользователям Visual Studio

Для того чтобы рассматривать все предупреждения как ошибки, необходимо выполнить следующие действия: кликнуть правой кнопкой мыши по названию вашего проекта в разделе "Обозреватель решений" и выбрать пункт "Свойства".

Перед тем как продолжить работу в диалоговом окне проекта, убедитесь, что в разделе "Конфигурация" выбрано значение "Все конфигурации". Перейдите на вкладку "C/C++" > "Общие" и установите опцию "Обрабатывать предупреждения как ошибки" на значение "Да(/WX)".

После этого нажмите кнопку "Применить" и затем "ОК".

Пользователям Code::Blocks

Зайдите в раздел "Настройки" > "Компилятор":

После этого перейдите в раздел "Настройки компилятора" > "Другие параметры компилятора" и введите флаг -Werror в поле для редактирования:

После этого нажмите кнопку "Подтвердить".

Пользователям GCC/G++

Пожалуйста, введите указанный флаг в командную строку:

Необходимо избегать ошибок

196   0  

Comments

    Ничего не найдено.