Урок №9. Налаштування компілятора: Попередження та помилки

  Юрій  | 

  Оновл. 9 Кві 2020  | 

 94

Сьогодні ми поговоримо про те, як підвищити рівень попереджень в компіляторах і змусити їх сприймати всі попередження так, наче це були б помилки.

Попередження в С++

На етапі компіляції компілятор перевіряє, чи відповідає ваш код правилам мови програмування C++. Якщо ви порушили синтаксис С++, то компілятор видасть вам помилку, надавши як номер рядка, який містить помилку, так і зміст самої помилки. Фактично, помилка може перебувати як в рядку, про який вам повідомив компілятор, так і в рядку перед ним. Після того, як ви визначили і виправили рядки коду з помилками, ви можете спробувати скомпілювати вашу програму ще раз.

Також трапляються ситуації, коли компілятор бачить код з помилками, але не до кінця в цьому впевнений (пам’ятаєте, що суть філософії С++ полягає у виразі «Довіряй програмісту!»). У таких випадках компілятор може видати вам попередження. Попередження не зупиняють процес компіляції, але повідомляють програмісту, що щось пішло не так.

Порада: Не дозволяйте попередженням накопичуватися. Вирішуйте їх по мірі надходження (ніби це помилки).

У більшості випадків попередження можуть бути усунені шляхом виправлення помилки, на яку вказує попередження, або шляхом переписування рядків коду, що генерують попередження таким чином, щоб ці попередження більше не генерувалися.

Дуже рідко може знадобитися варіант явно вказати компілятору, щоб він не генерував конкретне попередження для поточного рядка коду. C++ не підтримує такий спосіб вирішення попереджень, але деякі компілятори (включаючи Visual Studio і GCC) надають можливість (через НЕ портативні директиви #pragma) тимчасового вимкнення попереджень.

За замовчуванням більшість компіляторів генерують лише попередження про найбільш очевидні проблеми. Однак ви можете попросити ваш компілятор бути більш доскіпливим у генерації попереджень про речі, які він вважає дивними.

Порада: Змініть рівень попереджень від компілятора на вищий, особливо під час навчання. Це допоможе вам визначити можливі проблеми.

Зміна рівня попереджень

Користувачам Visual Studio

Щоб підвищити рівень попереджень в Visual Studio, клацніть правою кнопкою миші по назві вашого проекту в "Обозревателе решений" -> "Свойства":

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

Після цього натисніть на "Применить" і "ОК".

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

Користувачам Code::Blocks

Перейдіть в меню "Settings" -> "Compiler":

І на вкладці "Compiler settings" -> "Compiler flags" поставте галочки біля наступних пунктів:

   Enable all common compiler warnings (overrides many other settings) [-Wall]

   Enable Effective-C++ warnings (thanks Scott Meyers) [-Weffc++]

   Enable extra compiler warnings [-Wextra]

Приклад:

Натискаємо "ОК" і після цього переходимо на вкладку "Other compiler options" і додаємо в область редагування текст -Wsign-conversion –Werror:

І натискаємо "Ок".

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

Користувачам GCC/G++

Додайте наступні флагі в ваш командний рядок:

-Wall -Weffc++ -Wextra -Wsign-conversion

Сприймати попередження як помилки

Ви також можете вказати вашому компілятору переглядати всі попередження, як помилки (в такому випадку, компілятор буде зупиняти процес компіляції, якщо знайде будь-які попередження). Це хороший варіант змусити себе виправляти всі попередження, особливо, якщо вам не вистачає самодисципліни (загалом, як і більшості із нас).

Користувачам Visual Studio

Щоб обробляти всі попередження як помилки, натисніть правою кнопкою миші по назві вашого проекту в "Обозревателе решений" -> "Свойства":

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

Після цього натисніть на "Применить" і "ОК".

Користувачам Code::Blocks

Перейдіть в меню "Settings" -> "Compiler":

Після цього "Compiler settings" -> "Other compiler options" і додайте -Werror в область редагування:

Після цього натисніть "ОК".

Користувачам GCC/G++

Додайте наступний флаг в ваш командний рядок:

-Werror

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (1 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *