Microsoft-Specific Modifiers

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

Many of the Microsoft-specific keywords can be used to modify declarators to form derived types. For more information about declarators, see Declarators.

Microsoft-Specific Keywords

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

Other Resources

C++ Language Reference