-
Автор темы
- #1
ориг тема -
предыдущая тема от Bel0chka - следущая тема отgddcfd - https://yougame.biz/threads/152684/#post-1639654
0.12 - Конфигурирование вашего компилятора: выбор языкового стандарта
Поскольку доступно множество различных версий C ++ (C ++ 98, C ++ 03, C ++ 11, C ++ 14, C ++ 17 и т. Д.), Как ваш компилятор узнает, какую из них использовать? Как правило, компилятор выбирает стандарт по умолчанию (часто не самый последний языковой стандарт). Если вы хотите использовать другой стандарт, вам необходимо настроить для этого вашу IDE / компилятор. Эти настройки применяются только к активному проекту. Вам необходимо установить их заново при создании нового проекта.
Learncpp использует C ++ 17. Если ваш компилятор не поддерживает C ++ 17, вы не сможете усвоить все уроки, хотя большинство из них не затронуты. Убедитесь, что вы используете последнюю версию компилятора, чтобы вы могли скомпилировать все примеры самостоятельно. В конце этого урока есть пример, который вы можете использовать, чтобы проверить, правильно ли вы настроили свой компилятор.
Кодовые названия для разрабатываемых языковых стандартов
Обратите внимание, что языковые стандарты названы по годам, в которые они были завершены (например, C ++ 17 был завершен в 2017 году).
Однако, когда согласовывается новый языковой стандарт, неясно, в каком году состоится его окончательная доработка. Следовательно, незавершенным языковым стандартам присваиваются кодовые имена, которые затем заменяются фактическими именами после завершения работы над стандартом. Например, C ++ 11 назывался C ++ 1x, когда над ним работали. Вы все еще можете видеть кодовые имена, используемые в местах (особенно для будущей версии языкового стандарта, у которой еще не будет окончательного названия).
Вот сопоставление кодовых имен с конечными именами:
с ++ 1x = С ++ 11
c ++ 1y = C ++ 14
с ++ 1z = С ++ 17
c ++ 2a = C ++ 20
Например, если вы видите c++1z, это синоним стандарта языка C ++ 17.
Установка языкового стандарта в Visual Studio
На момент написания Visual Studio 2019 по умолчанию использует возможности C ++ 14, что не позволяет использовать новые функции, представленные в
C ++ 17 (и C ++ 20), некоторые из которых будут рассмотрены в будущих уроках. ,
Чтобы использовать эти новые функции, вам необходимо включить новый языковой стандарт. К сожалению, в настоящее время нет возможности сделать это глобально - вы должны делать это для каждого проекта отдельно.
Для этого откройте свой проект, затем перейдите в меню «Проект»> (Имя вашего приложения) Свойства, затем откройте « Свойства конфигурации»>
«C / C ++»> «Язык» .
Оттуда вы можете установить стандарт языка C ++ для той версии C ++, которую хотите использовать.
На момент написания мы рекомендуем выбрать «Стандарт ISO C ++ 17 (/ std: c ++ 17)», который является последним стабильным стандартом.
Если вы хотите поэкспериментировать с возможностями будущего языкового стандарта C ++ 20, выберите вместо этого «ISO C ++ Latest (/ std: c ++ latest)». Просто обратите внимание, что поддержка может быть неравномерной или глючной.
Установка языкового стандарта в Code :: Blocks
Code :: Blocks может по умолчанию соответствовать языковому стандарту до C ++ 11. Вы обязательно захотите проверить и убедиться, что включен более современный языковой стандарт.
Хорошая новость заключается в том, что Code :: Blocks позволяет установить глобальный языковой стандарт, поэтому вы можете установить его один раз (а не для каждого проекта). Для этого перейдите в меню Настройки> Компилятор :
Затем найдите поле или поля с надписью « Попросите g ++ следовать стандарту языка C ++ XX ISO C ++ [-std = c ++ XX] , где XX - 11, 14 или другое большее число (см. Элементы внутри красного поля ниже» Например):
Отметьте тот, у которого наибольшее число (на изображении выше это вариант C ++ 14 внутри красного поля).
Ваша версия Code :: Blocks может также поддерживать будущие (или только что выпущенные) версии C ++. Если это так, они будут помечены как « Приведите g ++ в соответствие с приближающимся стандартом языка C ++ XX (он же C ++ YY) ISO C ++ [-std = c ++ XX]» (см. Синее поле выше). Вы можете дополнительно отметить их, если хотите включить функции, добавленные в этой версии, но обратите внимание, что поддержка может быть неполной (т. е. Некоторые функции могут отсутствовать).
См. Список в верхней части урока, где приведен список кодовых имен для сопоставлений языковых стандартов.
Например, если вы хотите включить возможности C ++ 17, а в ваших настройках нет параметра C ++ 17, найдите -std=c++1z(кодовое имя для C ++ 17).
Кроме того, вы можете перейти на вкладку «Другие параметры компилятора» и ввести -std = c ++ 17 .
Заметка
Это будет работать, если ваш компилятор поддерживает C ++ 17. Если вы используете старую версию Code :: Blocks, а функции C ++ 17 не работают, обновите компилятор.
Установка языкового стандарта в g ++
Для пользователей GCC / G ++
Для GCC / G ++ вы можете передать флаги компилятора -std = c ++ 11, -std = c ++ 14, -std = c ++ 17 или -std = c ++ 2a, чтобы включить C ++ 11/14. / 17 / 2a соответственно.
Тестирование вашего компилятора
После включения C ++ 17 или более поздней версии вы сможете скомпилировать следующий код без предупреждений или ошибок.
Если вы не можете скомпилировать этот код, вы либо не включили C ++ 17, либо ваш компилятор не полностью поддерживает C ++ 17. В последнем случае установите последнюю версию вашей IDE / компилятора, как описано в уроке 0.6 - Установка интегрированной среды разработки (IDE) .
Пожалуйста, авторизуйтесь для просмотра ссылки.
предыдущая тема от Bel0chka - следущая тема отgddcfd - https://yougame.biz/threads/152684/#post-1639654
0.12 - Конфигурирование вашего компилятора: выбор языкового стандарта
Поскольку доступно множество различных версий C ++ (C ++ 98, C ++ 03, C ++ 11, C ++ 14, C ++ 17 и т. Д.), Как ваш компилятор узнает, какую из них использовать? Как правило, компилятор выбирает стандарт по умолчанию (часто не самый последний языковой стандарт). Если вы хотите использовать другой стандарт, вам необходимо настроить для этого вашу IDE / компилятор. Эти настройки применяются только к активному проекту. Вам необходимо установить их заново при создании нового проекта.
Learncpp использует C ++ 17. Если ваш компилятор не поддерживает C ++ 17, вы не сможете усвоить все уроки, хотя большинство из них не затронуты. Убедитесь, что вы используете последнюю версию компилятора, чтобы вы могли скомпилировать все примеры самостоятельно. В конце этого урока есть пример, который вы можете использовать, чтобы проверить, правильно ли вы настроили свой компилятор.
Кодовые названия для разрабатываемых языковых стандартов
Обратите внимание, что языковые стандарты названы по годам, в которые они были завершены (например, C ++ 17 был завершен в 2017 году).
Однако, когда согласовывается новый языковой стандарт, неясно, в каком году состоится его окончательная доработка. Следовательно, незавершенным языковым стандартам присваиваются кодовые имена, которые затем заменяются фактическими именами после завершения работы над стандартом. Например, C ++ 11 назывался C ++ 1x, когда над ним работали. Вы все еще можете видеть кодовые имена, используемые в местах (особенно для будущей версии языкового стандарта, у которой еще не будет окончательного названия).
Вот сопоставление кодовых имен с конечными именами:
с ++ 1x = С ++ 11
c ++ 1y = C ++ 14
с ++ 1z = С ++ 17
c ++ 2a = C ++ 20
Например, если вы видите c++1z, это синоним стандарта языка C ++ 17.
Установка языкового стандарта в Visual Studio
На момент написания Visual Studio 2019 по умолчанию использует возможности C ++ 14, что не позволяет использовать новые функции, представленные в
C ++ 17 (и C ++ 20), некоторые из которых будут рассмотрены в будущих уроках. ,
Чтобы использовать эти новые функции, вам необходимо включить новый языковой стандарт. К сожалению, в настоящее время нет возможности сделать это глобально - вы должны делать это для каждого проекта отдельно.
Для этого откройте свой проект, затем перейдите в меню «Проект»> (Имя вашего приложения) Свойства, затем откройте « Свойства конфигурации»>
«C / C ++»> «Язык» .
Оттуда вы можете установить стандарт языка C ++ для той версии C ++, которую хотите использовать.
На момент написания мы рекомендуем выбрать «Стандарт ISO C ++ 17 (/ std: c ++ 17)», который является последним стабильным стандартом.
Если вы хотите поэкспериментировать с возможностями будущего языкового стандарта C ++ 20, выберите вместо этого «ISO C ++ Latest (/ std: c ++ latest)». Просто обратите внимание, что поддержка может быть неравномерной или глючной.
Установка языкового стандарта в Code :: Blocks
Code :: Blocks может по умолчанию соответствовать языковому стандарту до C ++ 11. Вы обязательно захотите проверить и убедиться, что включен более современный языковой стандарт.
Хорошая новость заключается в том, что Code :: Blocks позволяет установить глобальный языковой стандарт, поэтому вы можете установить его один раз (а не для каждого проекта). Для этого перейдите в меню Настройки> Компилятор :
Затем найдите поле или поля с надписью « Попросите g ++ следовать стандарту языка C ++ XX ISO C ++ [-std = c ++ XX] , где XX - 11, 14 или другое большее число (см. Элементы внутри красного поля ниже» Например):
Отметьте тот, у которого наибольшее число (на изображении выше это вариант C ++ 14 внутри красного поля).
Ваша версия Code :: Blocks может также поддерживать будущие (или только что выпущенные) версии C ++. Если это так, они будут помечены как « Приведите g ++ в соответствие с приближающимся стандартом языка C ++ XX (он же C ++ YY) ISO C ++ [-std = c ++ XX]» (см. Синее поле выше). Вы можете дополнительно отметить их, если хотите включить функции, добавленные в этой версии, но обратите внимание, что поддержка может быть неполной (т. е. Некоторые функции могут отсутствовать).
См. Список в верхней части урока, где приведен список кодовых имен для сопоставлений языковых стандартов.
Например, если вы хотите включить возможности C ++ 17, а в ваших настройках нет параметра C ++ 17, найдите -std=c++1z(кодовое имя для C ++ 17).
Кроме того, вы можете перейти на вкладку «Другие параметры компилятора» и ввести -std = c ++ 17 .
Заметка
Это будет работать, если ваш компилятор поддерживает C ++ 17. Если вы используете старую версию Code :: Blocks, а функции C ++ 17 не работают, обновите компилятор.
Установка языкового стандарта в g ++
Для пользователей GCC / G ++
Для GCC / G ++ вы можете передать флаги компилятора -std = c ++ 11, -std = c ++ 14, -std = c ++ 17 или -std = c ++ 2a, чтобы включить C ++ 11/14. / 17 / 2a соответственно.
Тестирование вашего компилятора
После включения C ++ 17 или более поздней версии вы сможете скомпилировать следующий код без предупреждений или ошибок.
Код:
#include <array>
#include <iostream>
#include <string_view>
#include <tuple>
#include <type_traits>
namespace a::b::c
{
inline constexpr std::string_view str{ "hello" };
}
template <class... T>
std::tuple<std::size_t, std::common_type_t<T...>> sum(T... args)
{
return { sizeof...(T), (args + ...) };
}
int main()
{
auto [iNumbers, iSum]{ sum(1, 2, 3) };
std::cout << a::b::c::str << ' ' << iNumbers << ' ' << iSum << '\n';
std::array arr{ 1, 2, 3 };
std::cout << std::size(arr) << '\n';
return 0;
}
Последнее редактирование: