Profile Name: Microsoft Visual C++
Profile Module Name: C++_MS_Profile.xml
The Microsoft Visual C++ profile includes only the data types that do not exist in the ANSI C++ profile. Microsoft C/C++ supports sized integer types. Declaration of 8-, 16-, 32-, or 64-bit integer variables can be done by using the __intn type specifier, where n is 8, 16, 32, or 64.
The types __int8, __int16, and __int32 are synonyms for the ANSI types that have the same size, and are useful for writing portable code that behaves identically across multiple platforms.

| The profile table and description in this section do not include the tagged value inherited from C++ ANSI profile. |

VC++Class
«VC++Class» inherits from the «C++Class» and «VC++StorageClass»
| Name | Meta Class | Constraints |
|---|---|---|
| VC++Class | Class | |
| Tag | Type | Description |
| inheritance | inheritanceType[0..1] = single (Enumeration) See inheritanceType | Represents the utilization of VC++ keywords, __single_inheritance, __multiple_inheritance, and __virtual_inheritance. |
| abstract | boolean[1] = false | Represents the utilization of keyword __abstract or abstract, depending on C++ dialects. |
| Inherited tag | Type | Description |
declspecModifier «VC++StorageClass» | String | For keeping an extended declaration modifier of __declspec See Extended storage-class attributes with __declspec |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
«VC++Struct» inherits from «C++Struct» and «VC++StorageClass» | ||
| Name | Meta Class | Constraints |
| VC++Struct | Class | |
| Inherited Tag | Type | Description |
declspecModifier «VC++StorageClass» | String | For keeping an extended declaration modifier of __declspec See Extended storage-class attributes with __declspec |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
| VC++Union | ||
| Name | Meta Class | Constraints |
| VC++Union | Class | |
| Inherited Tag | Type | Description |
declspecModifier «VC++StorageClass» | String | For keeping an extended declaration modifier of __declspec See Extended storage-class attributes with __declspec |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
VC++Enumeration | ||
| Name | Meta Class | Constraints |
VC++Enumeration | Enumeration | |
| Tag | Type | Description |
Type | Classifier[0..1] | Represents the type of enumeration literal |
VC++Typedef <<VC++Typedef>> inherits from <<C++Typedef>> and <<VC++StorageClass>> | ||
| Name | Meta Class | Constraints |
VC++Typedef | Class | |
| Inherited Tag | Type | Description |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
| VC++Attribute | ||
| Name | Meta Class | Constraints |
| VC++Attribute | Proeprty | |
| Inherited Tag | Type | Description |
C++Attributes «VC++Element» | String | For keeping C++Attributes |
| VC++Operation | ||
| Name | Meta Class | Constraints |
| VC++Operation | Operation | |
| Tag | Type | Description |
| callingConvention | callingConvention [0..1] (Enumeration) See callingConvention | Represents the utilization of keywords.
|
| __inline | boolean[1] = false | Represents the utilization of the __inline keyword. |
| __forceinline | boolean[1] = false | Represents the utilization of the __forceinline keyword. |
| Inherited Tag | Type | Description |
declspecModifier «VC++StorageClass» | String | For keeping an extended declaration modifier of __declspec See Extended storage-class attributes with __declspec |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
VC++Parameter | ||
| Name | Meta Class | Constraints |
| VC++Parameter | Parameter | |
| Inherited Tag | Type | Description |
C++Attributes «VC++Element» | String | For keeping C++ Attributes |
VC++StorageClass «VC++StorageClass» is an abstract stereotype corresponding to extended declaration modifier of __declspec. | ||
| Name | Meta Class | Constraints |
| VC++StorageClass | Element | |
| Tag | Type | Description |
| declspeModifier | String | For keeping an extended declaration modifier of __declspec. See Extended storage-class attributes with __declspec |
| VC++Element | ||
| Name | Meta Class | Constraints |
| VC++Element | Element | |
| Tag | Type | Description |
| C++Attributes | String | For keeping C++Attributes |
| VC++Interface | ||
| Name | Meta Class | Description |
| VC++Interface | Interface | Represents interface declaration with __interface keyword. |
| VC++Event | ||
| Name | Meta Class | Description |
| VC++Event | Operation, Property | Represents interface, method or member declaration with __event keyword. |
| Tag | Type | Description |
| isVirtualEvent | boolean[1] = false | Supports virtual event as shown in the example below. // data member as event virtual __event ClickEventHandler*OnClick; |
inheritanceType
inheritanceType will be used as the value of the tag named "inheritance" under «VC++Class».
| Literal | Description |
|---|---|
| single | Representation of __single_inheritance keyword. |
| multiple | Representation of __multiple_inheritance keyword. |
| virtual | Representation of __virtual_inheritance keyword. |
callingConvention
callingConvention will be used as the value of the tag named “calling convention” under «VC++Operation»
| Literal | Description |
|---|---|
| __cdecl | Represents the utilization of __cdecl modifier. |
| __clrcall | Represents the utilization of __clrcall modifier. |
| __stdcall | Represents the utilization of __stdcall modifier. |
| __fastcall | Represents the utilization of __fastcall modifier. |
| __thiscall | Represents the utilization of __thiscall modifier. |