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