| title | Microsoft-Specific Modifiers | Microsoft Docs | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ms.custom | ||||||||||||||
| ms.date | 11/04/2016 | |||||||||||||
| ms.reviewer | ||||||||||||||
| ms.suite | ||||||||||||||
| ms.technology |
|
|||||||||||||
| ms.tgt_pltfrm | ||||||||||||||
| ms.topic | language-reference | |||||||||||||
| dev_langs |
|
|||||||||||||
| ms.assetid | 22c7178c-f854-47fa-9de6-07d23fda58e1 | |||||||||||||
| caps.latest.revision | 10 | |||||||||||||
| author | mikeblome | |||||||||||||
| ms.author | mblome | |||||||||||||
| manager | ghogen | |||||||||||||
| translation.priority.ht |
|
This section describes Microsoft-specific extensions to C++ in the following areas:
-
Based addressing, the practice of using a pointer as a base from which other pointers can be offset
-
Extended storage-class attributes declared with the __declspec keyword
-
The __w64 keyword
Many of the Microsoft-specific keywords can be used to modify declarators to form derived types. For more information about declarators, see Declarators.
| Keyword | Meaning | Used to Form Derived Types? |
|---|---|---|
| __based | The name that follows declares a 32-bit offset to the 32-bit base contained in the declaration. | Yes |
| __cdecl | The name that follows uses the C naming and calling conventions. | Yes |
| __declspec | The name that follows specifies a Microsoft-specific storage-class attribute. | No |
| __fastcall | The name that follows declares a function that uses registers, when available, instead of the stack for argument passing. | Yes |
| __restrict | Similar to __declspec(restrict), but for use on variables. | No |
| __stdcall | The name that follows specifies a function that observes the standard calling convention. | Yes |
| __w64 | Marks a data type as being larger on a 64-bit compiler. | No |
| __unaligned | Specifies that a pointer to a type or other data is not aligned.. | No |
| __vectorcall | The name that follows declares a function that uses registers, including SSE registers, when available, instead of the stack for argument passing. | Yes |