Я работаю над большим совместным проектом C ++, который разрабатывается и работает на различных версиях Linux, OS X и Windows. Мы компилируем на этих платформах с помощью GCC, Visual Studio C ++ и компилятора Intel C ++. Поскольку все больше и больше людей начинают разрабатывать код для проекта, мы начинаем видеть странные ошибки при компиляции и во время выполнения, которые характерны для конкретных компиляторов в конкретных операционных системах. Примером этого является неявное включение заголовков, которые некоторые пары ОС / компилятор могут найти для вас, случайно перегружая функцию из базового класса в производном классе.
Моя цель - сделать сборку в GCC более строгой и отлавливать больше ошибок на всех платформах, чтобы мы не продолжали сталкиваться с этими проблемами. Вот мой список флагов, которые я собираюсь опробовать для GCC, которые я нашел через Google и справочные страницы GCC:
- -стена
- -Wextra
- -Winit-я
- -Wold стиле литой
- -Woverloaded виртуальные
- -Wuninitialized
- -Wmissing-декларации
- -Winit-я
- -ansi
- -pedantic
Какие другие флаги используются людьми, чтобы заставить GCC (и, что менее важно, Visual Studio C ++ и Intel C ++ Compiler) подчиняться более строгим стандартам языка C ++? Уточните, о каком компиляторе и версии вы говорите, поскольку некоторые из них могут быть реализованы не во всех версиях всех компиляторов.