We recommend using Visual Studio 2017

Attributes Alphabetical Reference


The latest version of this topic can be found at Attributes Alphabetical Reference. The following attributes are available in Visual C++.

aggregatableIndicates that a control can be aggregated by another control.
aggregatesIndicates that a control aggregates the target class.
appobjectIdentifies the coclass as an application object, which is associated with a full EXE application, and indicates that the functions and properties of the coclass are globally available in this type library.
async_uuidSpecifies the UUID that directs the MIDL compiler to define both synchronous and asynchronous versions of a COM interface.
attributeAllows you to create a custom attribute.
bindableIndicates that the property supports data binding.
call_asEnables a nonremotable function to be mapped to a remote function.
caseUsed with the switch_type attribute in a union.
coclassCreates a COM object, which can implement a COM interface.
com_interface_entryAdds an interface entry to a COM map.
controlSpecifies that the user-defined type is a control.
cpp_quoteEmits the specified string, without the quote characters, into the generated header file.
customLets you define your own attributes.
db_accessorBinds columns in a rowset and binds them to the corresponding accessor maps.
db_columnBinds a specified column to the rowset.
db_commandExecutes an OLE DB command.
db_paramAssociates the specified member variable with an input or output parameter.
db_sourceCreates and encapsulates a connection, through a provider, to a data source.
db_tableOpens an OLE DB table.
defaultIndicates that the custom or dispinterface defined within a coclass represents the default programmability interface.
defaultbindIndicates the single, bindable property that best represents the object.
defaultcollelemUsed for Visual Basic code optimization.
defaultvalueAllows specification of a default value for a typed optional parameter.
defaultvtableDefines an interface as the default vtable interface for a control.
dispinterfacePlaces an interface in the .idl file as a dispatch interface.
displaybindIndicates a property that should be displayed to the user as bindable.
dualPlaces an interface in the .idl file as a dual interface.
emitidlDetermines whether all subsequent IDL attributes will be processed and placed in the generated .idl file.
entrySpecifies an exported function or constant in a module by identifying the entry point in the DLL.
event_receiverCreates an event receiver.
event_sourceCreates an event source.
exportCauses a data structure to be placed in the .idl file.
first_isSpecifies the index of the first array element to be transmitted.
helpcontextSpecifies a context ID that lets the user view information about this element in the Help file.
helpfileSets the name of the Help file for a type library.
helpstringSpecifies the ID of a help topic in an .hlp or .chm file.
helpstringdllSpecifies the name of the DLL to use to perform document string lookup (localization).
hiddenIndicates that the item exists but should not be displayed in a user-oriented browser.
idSpecifies a DISPID for a member function (either a property or a method, in an interface or dispinterface).
idl_moduleSpecifies an entry point in a DLL.
idl_quoteAllows you to use attributes or IDL constructs that are not supported in the current version of Visual C++.
iid_isSpecifies the IID of the COM interface pointed to by an interface pointer.
immediatebindIndicates that the database will be notified immediately of all changes to a property of a data-bound object.
implementsSpecifies dispatch interfaces that are forced to be members of the IDL coclass.
implements_categorySpecifies implemented component categories for the class.
importSpecifies another .idl, .odl, or header file containing definitions you want to reference from your main .idl file.
importidlInserts the specified .idl file into the generated .idl file.
importlibMakes types that have already been compiled into another type library available to the type library being created.
inIndicates that a parameter is to be passed from the calling procedure to the called procedure.
includeSpecifies one or more header files to be included in the generated .idl file.
includelibCauses an .idl or .h file to be included in the generated .idl file.
last_isSpecifies the index of the last array element to be transmitted.
lcidLets you pass a locale identifier to a function.
length_isSpecifies the number of array elements to be transmitted.
library_blockPlaces a construct inside the .idl file's library block.
licensedIndicates that the coclass to which it applies is licensed, and must be instantiated using IClassFactory2.
localAllows you to use the MIDL compiler as a header generator when used in the interface header. When used in an individual function, designates a local procedure for which no stubs are generated.
max_isDesignates the maximum value for a valid array index.
moduleDefines the library block in the .idl file.
ms_unionControls the network data representation alignment of nonencapsulated unions.
no_injected_textPrevents the compiler from injecting code as a result of attribute use.
nonbrowsableIndicates that an interface member should not be displayed in a property browser.
noncreatableDefines an object that cannot be instantiated by itself.
nonextensibleSpecifies that the IDispatch implementation includes only the properties and methods listed in the interface description and cannot be extended with additional members at run time.
objectIdentifies a custom interface; synonymous with custom attribute.
odlIdentifies an interface as an Object Description Language (ODL) interface.
oleautomationIndicates that an interface is compatible with Automation.
optionalSpecifies an optional parameter for a member function.
outIdentifies pointer parameters that are returned from the called procedure to the calling procedure (from the server to the client).
pointer_defaultSpecifies the default pointer attribute for all pointers except top-level pointers that appear in parameter lists.
pragmaEmits the specified string, without the quote characters, into the generated .idl file.
progidSpecifies the ProgID for a COM object.
propgetSpecifies a property accessor (get) function.
propputSpecifies a property setting function.
propputrefSpecifies a property setting function that uses a reference instead of a value.
ptrDesignates a pointer as a full pointer.
publicEnsures that a typedef will go into the type library even if it is not referenced from within the .idl file.
rangeSpecifies a range of allowable values for arguments or fields whose values are set at run time.
rdxCreates or modifies a registry key.
readonlyProhibits assignment to a variable.
refIdentifies a reference pointer.
registration_scriptExecutes the specified registration script.
requesteditIndicates that the property supports the OnRequestEdit notification.
requires_categorySpecifies required component categories for the class.
restrictedSpecifies that a library, or member of a module, interface, or dispinterface cannot be called arbitrarily.
retvalDesignates the parameter that receives the return value of the member.
satypeSpecifies the data type of the SAFEARRAY.
size_isSpecifies the size of memory allocated for sized pointers, sized pointers to sized pointers, and single- or multidimensional arrays.
sourceIndicates that a member of a class, property, or method is a source of events.
stringIndicates that the one-dimensional char, wchar_t, byte, or equivalent array or the pointer to such an array must be treated as a string.
support_error_infoSupports error reporting for the target object.
switch_isSpecifies the expression or identifier acting as the union discriminant that selects the union member.
switch_typeIdentifies the type of the variable used as the union discriminant.
synchronizeSynchronizes access to a method.
threadingSpecifies the threading model for a COM object.
transmit_asInstructs the compiler to associate a presented type, which client and server applications manipulate, with a transmitted type.
uidefaultIndicates that the type information member is the default member for display in the user interface.
uniqueSpecifies a unique pointer.
usesgetlasterrorTells the caller that if there is an error when calling that function, the caller can then call GetLastError to retrieve the error code.
uuidSpecifies the unique ID for a class or interface.
v1_enumDirects that the specified enumerated type be transmitted as a 32-bit entity, rather than the 16-bit default.
varargSpecifies that the function take a variable number of arguments.
versionIdentifies a particular version among multiple versions of an interface or class.
vi_progidSpecifies a version-independent form of the ProgID.
wire_marshalSpecifies a data type that will be used for transmission instead of an application-specific data type.

C++ Attributes Reference
Attributes by Group
Attributes by Usage