Перейти к содержимому

Как поменять версию c в visual studio

  • автор:

Установка поддержки C11 и C17 в Visual Studio

Для поддержки стандартов C11 и C17 требуется Visual Studio 2019 версии 16.8 или более поздней. Чтобы отобразилась документация для этой версии, установите в этой статье селектор Версия Visual Studio в положение «Visual Studio 2019». Он находится в верхней части оглавления на этой странице.

Поддержка стандартов C11 и C17 доступна в Visual Studio 2019 версии 16.8 и более поздних версий. Для поддержки требуется обновленная универсальная среда выполнения C (UCRT) и обновленная версия Windows SDK. Это гарантирует правильную работу с соответствующим препроцессором ( /Zc:preprocessor ).

Выпуски Windows SDK соответствуют выпускам ОС Windows. Для поддержки C11 и C17 требуется Windows SDK 10.0.20348.0 (версия 2104) или новее. Windows SDK можно установить на вкладке Отдельные компоненты в Visual Studio Installer. Чтобы установить последнюю версию пакета SDK и создать код C11 или C17 в Visual Studio или в командной строке, можно выполнить приведенные ниже действия.

Предварительные условия

Установленные и запущенные на компьютере среда Visual Studio 2019 версии 16.8 или более поздней и Windows SDK 10.0.20348.0 (версия 2104) или более поздней версии. Для лучшей поддержки рекомендуем использовать последнюю доступную версию.

  • Если Visual Studio еще не установлено, ознакомьтесь с инструкциями по установке в статье Установка поддержки C и C++ в Visual Studio. При установке включите рабочую нагрузку Разработка классических приложений на C++ . Затем откройте вкладку «Отдельные компоненты». Выберите Windows 10 SDK (10.0.20348.0) или более поздней версии или последнюю версию Windows 11 SDK.
  • Если среда Visual Studio уже установлена, но у вас нет необходимого Windows SDK, откройте Visual Studio Installer. Нажмите кнопку Изменить рядом с версией Visual Studio, чтобы установить выбранные компоненты. Откройте вкладку «Отдельные компоненты». Выберите Windows 10 SDK (10.0.20348.0) или более поздней версии или последнюю версию Windows 11 SDK. Нажмите кнопку Изменить, чтобы установить выбранные компоненты.

По завершении установки откройте Visual Studio.

Настройка режима C11 или C17 в Visual Studio

В Visual Studio последовательно откройте новый или существующий проект C, а затем — диалоговое окно Страницы свойств проекта.

Настройте проект для использования только что установленного Windows SDK. На странице Свойства конфигурации>Общие задайте для свойства Версия Windows SDK значение 10.0 (последняя установленная версия) или укажите конкретную версию SDK, которую вы установили.

Вы также увидите параметр, относящийся к языку C: Стандарт языка C. Присвойте ему значение ISO C11 Standard ( /std:c11 ) (Стандарт ISO C11 (/std:c11)) или ISO C17 (2018) Standard ( /std:c17 ) (Стандарт ISO C17 (2018) (/std:c17)).

Снимок экрана: диалоговое окно страниц свойств на странице конфигурации общих свойств с раскрывающимся списком свойств стандарта языка C и выбранным пунктом ISO C17.

Свойство стандарта языка C++ используется, если языком является C++. По умолчанию файл имеет расширение .cpp . Версия свойства стандарта языка C используется, если языком является C. По умолчанию файл имеет расширение .c . Чтобы выполнить сборку с помощью C11 или C17, разместите исходный код в файле .c или настройте компиляцию кода как C. Можно задать это свойство для проекта на странице Свойства конфигурации>C/C++>Дополнительно. Установите для свойства Компилировать как значение Компилировать как C код (/TC) .

Поздравляем! Вы настроили все компоненты для создания кода C11 и C17 в Visual Studio.

0.12 – Настройка компилятора: выбор стандарта языка C++

Поскольку доступно множество различных версий C++ (C++98, C++03, C++11, C++14, C++17 и т. д.), как ваш компилятор узнает, какую из них использовать? Как правило, компилятор выбирает стандарт по умолчанию (часто не самый последний стандарт языка). Если вы хотите использовать другой стандарт, вам необходимо изменить настройки вашей IDE/компилятора. Эти настройки применяются только к активному проекту. При создании нового проекта их необходимо установить заново.

Мы используем C++17. Если ваш компилятор не поддерживает C++17, вы не сможете полностью пройти все уроки, хотя с большинством из них у вас не будет проблем. Убедитесь, что вы используете последнюю версию компилятора, чтобы вы могли самостоятельно скомпилировать все примеры. В конце этого урока есть пример, который вы можете использовать, чтобы проверить, правильно ли вы настроили компилятор.

Кодовые названия для разрабатываемых стандартов языка C++

Обратите внимание, что стандарты языка C++ названы по годам, в которые они были приняты (например, C++ 17 был завершен в 2017 году).

Однако, когда идет согласование нового языкового стандарта, неясно, в каком году состоится его окончательная доработка. Следовательно, незавершенным языковым стандартам присваиваются кодовые названия, которые затем, после завершения стандарта, заменяются фактическими названиями. Например, C++11 во время разработки назывался c++1x. Вы по-прежнему можете встречать эти кодовые названия (особенно для будущей версии языкового стандарта, у которой еще нет окончательного названия).

Вот сопоставление кодовых названий с конечными названиями:

  • c++1x = C++11
  • c++1y = C++14
  • c++1z = C++17
  • c++2a = C++20

Например, если вы видите c++1z, это синоним стандарта языка C++17.

Настройка стандарта языка C++ в Visual Studio

На момент написания Visual Studio 2019 по умолчанию использует возможности C++14, что не позволяет использовать новые функции, представленные в C++17 (и C++20), некоторые из которых будут рассмотрены в будущих уроках.

Чтобы использовать эти новые функции, вам необходимо активировать новый языковой стандарт. К сожалению, в настоящее время нет возможности сделать это глобально – вы должны делать это для каждого проекта отдельно.

Для этого откройте свой проект, затем перейдите в меню Проект (Project) → Свойства (Properties) (имя вашего приложения), затем откройте Свойства конфигурации (Configuration Properties) → C/C++Язык (Language).

Там вы можете установить стандарт языка C++ на ту версию C++, которую хотите использовать.

Рисунок 1 Выбор стандарта языка C++ в Visual Studio

На момент написания мы рекомендуем выбрать «Стандарт ISO C++17 (/std:c++17)» (ISO C++17 Standard (/std:c++17)), который является последним стабильным стандартом.

Если вы хотите поэкспериментировать с возможностями будущего языкового стандарта C++20, выберите «Предварительная версия – функции из последнего рабочего черновика C++ (/std:c++latest)» (ISO C++Latest (/std:c++latest)). Просто обратите внимание, что поддержка может быть нестабильной или глючной.

Настройка стандарта языка C++ в Code::Blocks

Code::Blocks может по умолчанию использовать языковой стандарт до C++11. Обязательно проверьте и убедитесь, что включен более современный языковой стандарт.

Хорошая новость заключается в том, что Code::Blocks позволяет установить языковой стандарт глобально, поэтому вы можете настроить его один раз (а не для каждого проекта). Для этого перейдите в меню Settings (Настройки) → Compiler (Компилятор):

Рисунок 2 Переход к настройкам компилятора в Code::Blocks

Затем найдите поле или поля с надписью «Have g++ follow the C++XX ISO C++ language standard [-std=c++XX]», где XX – это 11, 14 или другое большее число (смотрите элементы внутри прямоугольников на скриншоте ниже):

Рисунок 3 Настройка стандарта языка C++ в Code::Blocks

Отметьте тот, у которого наибольшее число (на изображении выше это вариант C++17 внутри синего прямоугольника).

Ваша версия Code::Blocks может также поддерживать будущие (или только что выпущенные) версии C++. Если это так, они будут помечены как «Have g++ follow the coming C++XX (aka C++YY) ISO C++ language standard [-std=c++XX]» (синий прямоугольник на скриншоте ниже). При желании вы можете включить их, если хотите использовать функции, добавленные в этих версиях, но обратите внимание, что поддержка может быть неполной (т.е. некоторые функции могут отсутствовать).

Рисунок 4 Стандарт C++17, когда он еще не был принят, т.е. c++1z, в Code::Blocks

Смотрите список в верхней части статьи, где приведен список кодовых названий, соответствующих языковым стандартам.

Например, если вы хотите включить возможности C++17, а в ваших настройках нет параметра C++17, найдите -std=c++1z (кодовое название для C++17).

Кроме того, вы можете перейти на вкладку «Other Compiler Options» (Другие параметры компилятора) и ввести -std=c++17 .

Рисунок 5 Выбор стандарта языка в Code::Blocks с помощью флага компилятора

Примечание

Это будет работать, если ваш компилятор поддерживает C++17. Если вы используете старую версию Code::Blocks, и функции C++17 не работают, обновите компилятор.

Установка языкового стандарта в g++

Для GCC/G++ вы можете передать флаги компилятора -std=c++11 , -std=c++14 , -std=c++17 или -std=c++2a , чтобы включить C++11/14/17/2a соответственно.

Тестирование вашего компилятора

После включения C++17 или выше вы сможете скомпилировать следующий код без каких-либо предупреждений или ошибок.

#include #include #include #include #include namespace a::b::c < inline constexpr std::string_view str< "hello" >; > template std::tuple> sum(T. args) < return < sizeof. (T), (args + . ) >; > int main() < auto [iNumbers, iSum]< sum(1, 2, 3) >; std::cout ; std::cout

Если вы не можете скомпилировать этот код, то вы либо не включили C++17, либо ваш компилятор не полностью его поддерживает. В последнем случае установите последнюю версию вашей IDE/компилятора, как описано в уроке «0.6 – Интегрированная среда разработки (IDE)».

Практическое руководство. Изменение требуемой версии .NET Framework и набора средств платформы

Файл проекта Visual Studio C++ можно изменить, чтобы указать другие версии набора инструментов платформы C++. Также можно указать другие версии Windows SDK и .NET Framework. (Изменить версию .NET Framework можно только для проектов C++/CLI). В новом проекте используется платформа .NET Framework по умолчанию и набор инструментов версии Visual Studio, используемой для создания проекта. Все эти значения можно изменить в файле VCXPROJ, чтобы использовать одну и ту же базу кода для каждого целевого объекта компиляции.

Набор инструментов платформы

Набор инструментов платформы состоит из компилятора C++ (cl.exe) и компоновщика (link.exe) вместе со стандартными библиотеками C/C++. Studio 2015, Visual Studio 2017 и Visual Studio 2019 совместимы на уровне двоичного кода. Об этом свидетельствует основной номер версии набора инструментов, который остался равным 14. Проекты, скомпилированные в Visual Studio 2019 или Visual Studio 2017 обратно совместимы на уровне ABI с проектами, скомпилированными в Visual Studio 2017 или Visual Studio 2015. Дополнительный номер версии обновляется на 1 для каждой версии с выпуска Visual Studio 2015:

  • Visual Studio 2015: v140
  • Visual Studio 2017: v141
  • Visual Studio 2019: v142
  • Visual Studio 2022: v143

Эти наборы инструментов поддерживают .NET Framework 4.5 и более поздних версий.

Visual Studio также поддерживает настройку для различных версий для проектов C++. Вы можете использовать последнюю версию интегрированной среды разработки Visual Studio для редактирования и сборки проектов, созданных в более ранних версиях Visual Studio. При этом не требуется обновлять проект, чтобы в нем использовалась новая версия набора инструментов. На компьютере должны быть установлены более ранние версии наборов инструментов. Дополнительные сведения см. в разделе Использование собственной настройки для использования различных версий в Visual Studio. Например, в Visual Studio 2015 можно выбрать .NET Framework 2.0 в качестве целевой платформы, но необходимо использовать более раннюю версию набора инструментов, поддерживающую .NET Framework 2.0.

Целевая платформа (только для проектов C++/CLI)

При изменении целевой версии платформы одновременно изменяется набор инструментов платформы для обеспечения поддержки этой версии. Например, при выборе .NET Framework 4.5 в качестве целевой платформы необходимо использовать совместимый набор инструментов платформы. Эти наборы инструментов включают Visual Studio 2015 (версия 140), Visual Studio 2013 (версия 120) или Visual Studio 2012 (версия 110). При выборе .NET Framework 2.0, 3.0, 3.5 и 4 в качестве целевой платформы можно использовать пакет SDK для Windows 7.1.

Создавая пользовательские наборы инструментов платформы, можно расширить поддержку целевой платформы. Дополнительные сведения см. в блоге по Visual C++ Нативное многоплатформенное нацеливание в C++ .

Изменение требуемой версии .NET Framework

  1. В обозревателе решенийVisual Studio выберите проект. В строке меню откройте меню Проект и выберите Выгрузить проект. Это выгружает файл проекта (VCXPROJ) для вашего проекта.

Примечание. Проект на языке C++ не может быть загружен, пока вы редактируете файл проекта в Visual Studio. Однако можно использовать другой редактор, например блокнот, чтобы изменить файл проекта, пока проект загружен в Visual Studio. Visual Studio определяет, что файл проекта был изменен и отображает запрос о необходимости перезагрузить проект.

Изменение набора инструментов платформы

  1. В строке меню Visual Studio выберите Проект>Свойства, чтобы открыть диалоговое окно Страницы свойств для вашего проекта.
  2. В верхней части диалогового окна Страницы свойств в раскрывающемся списке Конфигурация выберите Все конфигурации.
  3. В диалоговом окне выберите страницу свойств Свойства конфигурации>Общие.
  4. На странице свойств щелкните Набор инструментов платформы и выберите необходимый набор инструментов из раскрывающегося списка. Например, если вы установили набор инструментов Visual Studio 2010, выберите Visual Studio 2010 (версия 100) для использования в проекте.
  5. Чтобы сохранить внесенные изменения, нажмите кнопку OK.

Управление версиями языка C#

Компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта. Visual Studio не предоставляет пользовательский интерфейс для изменения этого значения, но его можно изменить, отредактировав файл CSPROJ. Выбор значения по умолчанию гарантирует, что вы используете последнюю версию языка, совместимую с вашей целевой платформой. Вы получите преимущество в виде доступа к последним функциям языка, совместимым с целевым объектом проекта. Этот вариант по умолчанию также гарантирует, что вы не будете использовать язык, который требует такие типы или поведение во время выполнения, которые недоступны в целевой платформе. Выбор более новой версии языка, чем значение по умолчанию, может усложнить диагностику ошибок во время компиляции и выполнения.

C# 12 поддерживается только в .NET 8 и более новых версиях. C# 11 поддерживается только в .NET 7 и более новых версиях. C# 10 поддерживается только в .NET 6 и более новых версиях.

Проверьте страницу совместимости платформы Visual Studio, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio. Ознакомьтесь со страницей совместимости Visual Studio для Mac платформы, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio для Mac. Проверьте страницу Mono для C# для совместимости Mono с версиями C# .

Defaults

Компилятор определяет значение по умолчанию на основе следующих правил:

Назначение Версия Версия языка C# по умолчанию
.NET 8.x C# 12
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework all C# 7.3

Если проект предназначен для preview платформы с соответствующей версией языка предварительной версии, используется языковая версия предварительной версии. Вы можете использовать новейшие возможности в этой предварительной версии в любой среде, не затрагивая проекты, предназначенные для выпущенной версии .NET Core.

Новый шаблон проекта для Visual Studio 2017 добавил latest запись в новые файлы проекта. При обновлении целевой платформы для этих проектов параметр может переопределить значение по умолчанию для новой целевой платформы. Не забудьте удалить latest файл проекта, чтобы убедиться, что проект использует рекомендуемую версию компилятора для целевой платформы. Вы можете обновить целевую платформу, чтобы получить доступ к новым языковым функциям.

Переопределите значение по умолчанию

Если необходимо явно указать версию C#, это можно сделать несколькими способами:

  • Вручную изменить файл проекта.
  • задание языковой версии для нескольких проектов в подкаталоге;
  • Настройте параметр компилятора LangVersion.

Языковая версия в Visual Studio отображается на странице свойств проекта. На вкладке «Сборка » на панели «Дополнительно» отображается выбранная версия.

Чтобы узнать, какую версию языка вы используете в данный момент, поставьте #error version (с учетом регистра) в коде. Это позволяет компилятору вывести ошибку CS8304 с сообщением, содержащим сведения об используемой версии компилятора и текущей выбранной версии языка. Дополнительные сведения см. в статье #error (справочник по C#).

Изменение файла проекта

Версию языка можно задать в файле проекта. Например, если доступ к предварительной версии функций должен быть задан явным образом, можно добавить следующий элемент:

 preview  

Значение preview использует последнюю предварительную версию языка C#, которую поддерживает компилятор.

Настройка нескольких проектов

Чтобы настроить несколько проектов, можно создать файл Directory.Build.props , как правило, в каталоге решения, который содержит элемент. Добавьте следующий параметр в файл Directory.Build.props :

  preview   

Сборки во всех подкаталогах каталога, содержащего этот файл, теперь используют предварительную версию C#. Дополнительные сведения см. в статье Настройка сборки.

Справочник по версиям языка C#

В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.

Значение Значение
preview Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии.
latest Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии).
latestMajor
или default
Компилятор принимает синтаксис из последней основной версии компилятора.
12.0 Компилятор принимает только синтаксис, включенный в C# 12 или ниже.
11.0 Компилятор принимает только синтаксис, включенный в C# 11 или ниже.
10.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий.
9.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий.
8.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии.
7.3 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии.
7.2 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии.
7.1 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии.
7 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии.
6 Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии.
5 Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии.
4 Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии.
3 Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии.
ISO-2
или 2
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0).
ISO-1
или 1
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2).

Указание LangVersion со значением отличается от пропуска параметра LangVersion . default Указание default последней версии языка, который поддерживает компилятор, без учета целевой платформы. Например, создание проекта, предназначенного для .NET 6 из текущей версии Visual Studio 2022, использует C# 10, если LangVersion не указан, но использует C# 11, если LangVersion имеет значение default .

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

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

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