Microsoft-specific modifiers

This section describes Microsoft-specific extensions to C++ in the following areas:

Microsoft-specific keywords

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

See also

C++ Language Reference