The latest version of this topic can be found at Microsoft-Specific Modifiers.
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|