Поделиться через


Расширения компонентов для платформ среды выполнения

Visual C++ предоставляет расширения языка, помогающие запрограммировать для платформ среды выполнения.С помощью Расширения компонентов Visual C++ (C++/CX) можно запрограммировать приложений и компонентов Магазина Windows, компилируют в машинный код.Хотя можно создать путем программирования приложений Магазина Windows непосредственно к интерфейсам COM Среда выполнения Windows, с помощью C++/CX можно работать с конструкторами, исключения и другими самомоднейшими идиоматизмами программирования C++.Чтобы включить программирование C++ в управляемой среде выполнения в платформе .NET, можно использовать C++/CLI.

2 Времени выполнения, один набор расширений

C++/CX является подмножеством C++/CLI.Для расширений, которые являются общими для C++/CX и C++/CLI, зависит от семантики предназначен ли среда CLR или Среда выполнения Windows.Чтобы компилировать приложение для запуска на Среда выполнения Windows, укажите параметр компилятора /ZW.Чтобы компилировать его, чтобы выполнить для среды CLR, укажите параметр компилятора /clr.Эти параметры устанавливаются автоматически при использовании Visual Studio для создания проекта.

Дополнительные сведения о создании приложения Магазина Windows в C++ см. в разделе Roadmap for Windows Store apps using C++.

C++/CLI расширяет стандарт ISO/ANSI C++ и стандартом Ecma C++/CLI указано ниже.Дополнительные сведения см. в разделе Программирование в Visual C++ .NET.

Ключевые слова типа данных

Расширения языка включают статистические ключевые слова, которые ключевые слова, которые состоят из 2 маркеров, разделенных пробелами.Токены могут иметь одно значение, если они используются отдельные, а другой смысл, если они используются совместно.Например, слово "ref" обычный идентификатор и слово" ключевое слово "класс, объявляющий собственный класс.Но если эти слова объединяются для формирования ref class итоговый обработка ключевое слово объявляется сущность, например класса среды выполнения.

Расширения также входит контекстные ключевые слова.Ключевое слово считается контекстный в зависимости от типа выписки, в которой он содержится, и его размещения в этой выписке.Например, маркер "свойство" может быть идентификатором или он может объявить специальный тип открытого члена класса.

В следующей таблице перечислены ключевые слова в курсе расширения языка C++.

Ключевое слово

Контекст учетом регистра

Назначение

Ссылки

ref class

ref struct

Нет

Объявляет класс.

Классы и структуры (расширения компонентов C++)

value class

value struct

Нет

Объявляет класс значения.

Классы и структуры (расширения компонентов C++)

interface class

interface struct

Нет

Объявляет интерфейс.

interface class (расширения компонентов C++)

enum class

enum struct

Нет

Объявляет перечисление.

enum class (расширения компонентов C++)

property

Да

Объявляет свойство.

property (расширения компонентов C++)

delegate

Да

Объявляет делегат.

delegate (расширения компонентов C++)

event

Да

Объявление события.

event (расширения компонентов C++)

Описатели переопределения

Можно использовать следующие ключевые слова для определения расширения функциональности переопределения для вывода.Хотя ключевое слово new не расширения C++, он перечислен здесь, поскольку его можно использовать в дополнительном контексте.Описатели также некоторые допустимые для собственного программирования.Дополнительные сведения см. в разделе Как Объявите описатели переопределения в собственных компиляциях.

Ключевое слово

Контекст учетом регистра

Назначение

Ссылки

abstract

Да

Указывает, что функции или классы являются абстрактными.

abstract (расширения компонентов C++)

new

Нет

Указывает, что функция не является переопределения версии базового класса.

new (новый слот в vtable) (расширения компонентов C++)

override

Да

Указывает, что метод должен быть преодолением переопределения версии базового класса.

override (расширения компонентов C++)

sealed

Да

Предотвращает классы от в качестве базовых классов.

sealed (расширения компонентов C++)

Ключевые слова для универсальных шаблонов

Следующие ключевые слова больше добавлены в универсальные типы поддержки.Дополнительные сведения см. в разделе Универсальные типы и методы (расширения компонентов C++).

Ключевое слово

Контекст учетом регистра

Назначение

generic

Нет

Объявляет универсальный тип.

where

Да

Определяет ограничения, применены к параметру универсального типа.

Прочие ключевые слова

Следующие ключевые слова больше добавлены к расширениям C++.

Ключевое слово

Контекст учетом регистра

Назначение

Ссылки

finally

Да

По умолчанию отображаются расширения функциональности обработок ошибок.

Обработка исключений (расширения компонентов C++)

for each, in

Нет

Перечисляет элементы коллекции.

для каждого внутри

gcnew

Нет

Выбирает типы на мусор- собранной куче.Используйте вместо new и delete.

ref new, gcnew (расширения компонентов C++)

ref new

Да

Выберите тип Среда выполнения Windows.Используйте вместо new и delete.

ref new, gcnew (расширения компонентов C++)

initonly

Да

Указывает, что член можно инициализировать только при объявлении или в статическом конструкторе.

initonly

literal

Да

Создает символьная переменная.

literal (расширения компонентов C++)

nullptr

Нет

Указывает, что дескриптор или указатель не указывает на объект.

nullptr (расширения компонентов C++)

Проектирования шаблона

Следующие конструкции языка реализованы в виде шаблонов, а не в виде ключевых слов.Если указан параметр компилятора /ZW, то они определены в пространстве имен lang.Если указан параметр компилятора /clr, то они определены в пространстве имен cli.

Ключевое слово

Назначение

Ссылки

array

Объявляет массив.

Массивы (расширения компонентов C++)

interior_ptr

(Среда CLR) точки к данным в ссылочном типе.

interior_ptr (C++/CLI)

pin_ptr

(Среда CLR) точки к ссылочным типам среды CLR, чтобы временно отключить системы сборки мусора.

pin_ptr (C++/CLI)

safe_cast

Определяет и выполняет оптимальный метод литья для типа времени выполнения.

safe_cast (расширения компонентов C++)

typeid

(Среда CLR) извлекает объект System.Type, описывающий заданный тип или объект.

typeid (расширения компонентов C++)

Деклараторы

Следующие деклараторы типа указывают среде выполнения на автоматическое управление временем существования и удаление выбранных объектов.

Оператор

Назначение

Ссылки

^

Объявляет дескриптор объекта; то есть указатель на объект Среда выполнения Windows или среды CLR, которая автоматически удалено, когда он больше нельзя будет использовать.

Оператор дескриптора объекта (^) (расширения компонентов C++)

%

Объявляет ссылку отслеживания. то есть ссылку на Среда выполнения Windows или объект среды CLR, автоматически удалено, когда он больше нельзя будет использовать.

Оператор отслеживания ссылок (расширения компонентов C++)

Дополнительные конструирования и связанные разделы

В этом разделе перечислены дополнительные программные конструкции, и темы, которые относятся к среды CLR.

Раздел

Описание

__identifier (C++/CLI)

(Среда выполнения Windows и среда CLR) обеспечивает использование ключевых слов в качестве идентификаторов.

Списки аргументов переменных (...) (C++/CLI)

(Среда выполнения Windows и среда CLR) позволяет функции принять переменное число аргументов.

Эквиваленты собственным типам C++ в .NET Framework (C++/CLI)

Перечисляет типы среды CLR, которые используются вместо целочисленных типов C++.

Модификатор appdomain__declspec

Модификатор __declspec этот mandates, что статическим и глобальная переменная существуйте в appdomain.

Приведение в стиле C с использованием параметра /clr (C++/CLI)

Описывает способы приведения в стиле языка C, интерпретируются.

Соглашение о вызовах __clrcall

Указывает среды CLR- совместимого соглашение о вызовах.

__cplusplus_cli

Предварительно определенные макросы

Настраиваемые атрибуты (C++)

Описывает, как определить собственные атрибуты среды CLR.

Обработка исключений (расширения компонентов C++)

Предоставляет общие сведения об обработке ошибок.

Явные переопределения (расширения компонентов C++)

Демонстрирует, как функции-члены могут переопределять произвольные элементы.

Дружественные сборки (C++)

Описывает, как клиент сборка может получить доступ ко всем типа в компонент сборки.

Упаковка-преобразование (расширения компонентов C++)

Описание условия, при которых типы значений, помещаются в упакован.

Поддержка характеристик типов компилятором (расширения компонентов C++)

Содержит сведения о том, как определить характеристики типов во время компиляции.

Прагмы managed, unmanaged

Демонстрирует, как управляемой и неуправляемой функции могут совместно существовать в одном модуле.

Модификатор process__declspec

Модификатор __declspec этот mandates, что статическим и глобальная переменная существуйте в процесс.

Отражение (C++/CLI)

Показывает версию среды CLR данных о типах во время выполнения.

String (расширения компонентов C++)

Обсуждается преобразование компилятора строковых литералов в String.

Перенаправление типов (C++/CLI)

Включает перемещения типа в сборке доставки на другую сборку, чтобы клиентский код не должен быть перекомпилирован.

Пользовательские атрибуты (расширения компонентов C++)

Демонстрирует определяемые пользователем атрибуты.

Директивы #using (C++)

Импортирования внешние сборки.

Документация XML (Visual C++)

Объясняет на основе XML документации кода с помощью /doc (обработка комментариев документации) (C/C++)

См. также

Другие ресурсы

Программирование в Visual C++ .NET

Взаимодействие исходного кода и платформы.NET