Предупреждения компилятора C / C ++: очищаете ли вы весь свой код, чтобы удалить их или оставить в нем? - PullRequest
63 голосов
/ 08 октября 2008

Я работал над многими проектами, где другие дали мне код для обновления. Чаще всего я компилирую его и получаю более 1000 предупреждений компилятора. Когда я вижу предупреждения компилятора, они заставляют меня чувствовать себя грязно, поэтому моя первая задача - очистить код и удалить их все. Обычно я нахожу около десятка таких проблем, как неинициализированные переменные, такие.

Я не понимаю, почему люди оставляют их и не имеют идеально чистых компиляций без предупреждений. Я что-то пропустил? Есть ли веская причина просто оставить их? Какие-нибудь страшные истории, которыми можно поделиться?

Ответы [ 18 ]

3 голосов
/ 09 октября 2008

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

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

Существуют способы удаления предупреждения (например, #pragma argsused).

Пусть компилятор сделает всю работу.

2 голосов
/ 08 октября 2008

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

1 голос
/ 08 октября 2008

Предупреждения являются и должны рассматриваться как ошибки. Если вы не можете написать достаточно хорошо, чтобы избавиться от предупреждений, то, вероятно, вам не следует кодировать. В моей группе мы приняли решение форсировать все предупреждения на ошибки. На этом обсуждение заканчивается, и действительно, ИМХО, улучшает качество кода.

0 голосов
/ 08 октября 2008

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

0 голосов
/ 08 октября 2008

Кодовая база, над которой я работаю, содержит более 4000 предупреждений. Некоторые из них являются законными проблемами. Нам никогда не дают времени на то, чтобы их исправлять и исправлять другие неисправности ... Отчасти это потому, что код настолько стар, что предшествует стандартизированному C ++. Мы можем компилировать только в VC ++ 6.

0 голосов
/ 09 октября 2008

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

Когда у меня есть время, я прохожу и убираю что могу.

0 голосов
/ 11 октября 2008

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

Короткая версия: В g ++ я использую "-Wextra -Wno-sign-compare" и избавляюсь от всех сообщений.

0 голосов
/ 08 октября 2008

Всегда очищайте все предупреждения или явно подавляйте их при необходимости. Настройки по умолчанию для предупреждений должны быть максимально возможными при компиляции (например, уровень 4 в VS).

...