0.10 – Настройка компилятора: расширения компилятора
Стандарт C++ определяет правила поведения программ в определенных обстоятельствах. И в большинстве случаев компиляторы будут следовать этим правилам. Однако многие компиляторы вносят свои собственные изменения в язык, часто для улучшения совместимости с другими версиями языка (например, C99) или по историческим причинам. Такое поведение, зависящее от компилятора, называется расширениями компилятора.
Написание программы, использующей расширение компилятора, позволяет писать программы, несовместимые со стандартом C++. Программы, использующие нестандартные расширения, обычно не будут компилироваться другими компиляторами (которые не поддерживают те же расширения), или, если такая программа будет всё-таки скомпилирована, она может работать некорректно.
К сожалению, расширения компилятора по умолчанию часто включены. Это особенно вредно для новичков, которые могут подумать, что какое-то работающее поведение является частью официального стандарта C++, тогда как на самом деле их компилятор просто чрезмерно снисходителен.
Поскольку использование расширений компилятора никогда не является обязательным, и они приводят к тому, что ваши программы не соответствуют стандартам C++, мы рекомендуем их отключать.
Лучшая практика
Отключите расширения компилятора, чтобы ваши программы (и методы кодирования) оставались совместимыми со стандартами C++ и работали в любой системе.
Отключение расширений компилятора
Для пользователей Visual Studio
Чтобы отключить расширения компилятора, щелкните правой кнопкой мыши на имени проекта в окне обозревателя решений и выберите Свойства:
В диалоговом окне проекта сначала убедитесь, что в поле Конфигурация (Configuration ) установлено значение Все конфигурации (All Configurations).
Затем кликните C/C++ → вкладка Язык (Language) и установите для параметра «Отключить расширения языка» (Disable Language Extensions) значение «Да (/Za)».
Для пользователей Code::Blocks
Отключите расширения компилятора через меню Settings (Настройки) → Compiler (Компилятор) → вкладка Compiler flags (Флаги компилятора), затем найдите и включите параметр -pedantic-errors.
Для пользователей GCC/G++
Вы можете отключить расширения компилятора, добавив флаг -pedantic-errors в командную строку компиляции.
Напоминание
Эти настройки применяются для отдельного проекта. Вам необходимо устанавливать их каждый раз, когда вы создаете новый проект, или один раз создать шаблонный проект с этими настройками и использовать его для создания новых проектов.