Конфигурация компилятора: Расширения компилятора

  Юрий  | 

  Обновл. 19 Апр 2020  | 

 2847

В этом уроке мы поговорим о том, что такое расширения компилятора, полезны ли они и как их выключить.

Расширения компилятора

Стандарт C++ определяет правила поведения программ при определённых обстоятельствах. И в большинстве случаев компиляторы также будут следовать этим правилам. Однако многие компиляторы вносят свои собственные изменения в язык программирования, часто для улучшения совместимости с другими версиями языка (например, C99), или по историческим причинам. Эти специфичные для компилятора поведения называются расширениями компилятора.

Используя расширения компилятора, вы получаете возможность писать программы, несовместимые со стандартом C++. Программы, использующие нестандартные расширения, обычно не компилируются на других компиляторах (которые не поддерживают эти же расширения), или вообще могут работать не так как нужно.

К сожалению, расширения компилятора часто включены по умолчанию. Это особенно вредно для новичков в программировании, которые могут подумать, что специфическое поведение, вызванное расширениями компилятора, является частью официального стандарта C++ (когда, на самом деле, это не так).

Поскольку расширения компилятора очень редко, когда требуется, и приводят к тому, что ваши программы не соответствуют стандарту C++, то рекомендуется отключать расширения компилятора.

Совет: Отключите расширения компилятора, чтобы ваши программы оставались совместимыми со стандартами C++ и работали в любой системе.

Примечание: Настройки ниже применяются для каждого проекта отдельно. Вам нужно будет это всё проделывать при создании нового проекта, либо создать шаблон с этими настройками и уже по этому шаблону создавать новые проекты.

Отключение расширений компилятора


Пользователям Visual Studio

Чтобы отключить расширения компилятора в Visual Studio, щёлкните правой кнопкой мыши по названию вашего проекта в "Обозревателе решений" -> "Свойства":

В диалоговом окне вашего проекта убедитесь, что в пункте "Конфигурация" установлено значение "Все конфигурации". Затем перейдите на вкладку "C/C++" -> "Язык" и в пункте "Отключить расширения языка" выберите значение "Да (/Za)":

После этого нажимаем "Применить" и "ОК".

Пользователям Code::Blocks

Отключить расширения компилятора можно через меню "Settings" -> "Compiler":

Затем на вкладке "Compiler Flags" ищем пункт "Treat as errors the warnings demanded by strict ISO C and ISO C++ [-pedantic-errors]" и ставим возле него галочку, после чего нажимаем "OK":

Пользователям GCC/G++

Вы можете отключить расширения компилятора, добавив флаг -pedantic-errors в командную строчку компиляции.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (26 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *