Подробные и подробные флаги предупреждений для компиляций C с g
Gcc предоставляет полный набор флагов предупреждений, помогающих разработчикам обнаруживать потенциальные проблемы в их код. Чтобы включить подробные и подробные предупреждения в C , рассмотрите следующие рекомендации:
Основные предупреждения:
- -педантично: придерживайтесь строгих правил Стандарты языка C.
- -Wall: активировать все общепринятые предупреждения.
- -Wextra: расширить область предупреждения за пределы -Wall.
- -Wcast-align: обнаружить невыровненные приведения указателя.
- -Wcast-qual: предупреждать об изменениях типа указателя. квалификаторы.
- -Wctor-dtor-privacy: выделите проблемы с модификаторами доступа к конструктору класса и деструктору.
- -Wdisabled-optimization: определите код это можно оптимизировать, но нет.
- -Wformat=2: Улучшена обработка спецификаторов формата во время компиляции.
- -Winit-self: запретить повторную инициализацию переменных.
- -Wologic-op: обнаружить потенциальные проблемы с приоритетом операторов.
- -Wmissing-declarations: предупреждать об отсутствующих объявлениях переменные и функции.
- -Wmissing-include-dirs: выделите отсутствующие каталоги включения.
- -WnoException: поощряйте механизмы обработки исключений.
- -Wold-style-cast: определение потенциальной совместимости кода. проблемы.
- -Woverloaded-virtual: предупреждать о перегрузках виртуальных методов.
- -Wredundant-decls: указывать на избыточные объявления.
- -Wshadow: предотвращение непреднамеренного затенения переменные.
- -Wsign-conversion: обнаружение возможных ошибок преобразования знаков.
- -Wsign-promo: выявление потенциальных проблем с продвижением знаков.
- -Wstrict-null-sentinel: повышение безопасности кода за счет контроля нулевого дозорного. значения.
- -Wstrict-overflow=5: Ограничьте уровень целочисленного переполнения пятью предупреждениями.
- -Wswitch-default: Обеспечьте всестороннее обработка оператора переключения.
- -Wundef: предупреждение о неопределенных переменных или макросы.
- -Wno-unused: исключает предупреждения о неиспользуемых переменных, чтобы сосредоточить внимание на более важных проблемах.
Необязательные, но сомнительные предупреждения:
- -Wdisabled-optimization: может указывать неоптимальный код, но не обязательно ошибка.
- -Wfloat-equal: потенциально вызывает ложные срабатывания для безопасного сравнения на равенство.
- -Wold-style-cast : могут иметь ложные срабатывания в сторонних библиотеки.
- -Wsign-conversion: требует пристального внимания к типам данных во избежание ошибок.
- -Wsign-promo: те же соображения, что и - Wsign-conversion.
- -Wswitch-default: обеспечивает явную обработку случаев оператора переключения, но может быть утомительным.
Предупреждения, которые следует исключить:
Эти предупреждения опущены из-за потенциальных ложных срабатываний или ограниченной полезности:
- -Ваби: требуется компиляция двоичных файлов из различных источники.
- -Waggregate-return: может указывать на неявные преобразования типов данных.
- -Wconversion: может генерировать предупреждения для безобидных неявных преобразований.
- -Weffc : можно загромождать несвязанными предупреждения.
- -Winline: может применяться не во всех сценариях встроенных методов.
- -Winvalid-pch: не применяется к проектам, не используйте предварительно скомпилированные заголовки.
- -Wmissing-format-attribute: Требуются редко используемые расширения GNU.
- -Wpadded: требуется ручная оптимизация макетов классов.
- -Wstack-protector: требуются определенные флаги компилятора. для защиты стека.
- -Wstrict-aliasing=3: Предлагает ограниченное количество дополнительных предупреждений по сравнению с более низкими уровнями.
- -Wswitch-enum: слишком строгие ограничения и могут подходить не для всех случаев использования.
- -Wunsafe- оптимизация цикла: в определенных сценариях может генерировать ложные предупреждения.