The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Summary of Declarations.
declaration`:
declaration-specifiers attribute-seq optinit-declarator-listopt**;**
/* attribute-seq is Microsoft Specific */
declaration-specifiers:
storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt
attribute-seq : /* attribute-seq is Microsoft Specific */
attribute attribute-seq opt
attribute : one of /* Microsoft Specific */
| __asm | __clrcall | __stdcall |
| __based | __fastcall | __thiscall |
| __cdecl | __inline | __vectorcall |
init-declarator-list:
init-declarator
init-declarator-list , init-declarator
init-declarator:
declarator
declarator = initializer /* For scalar initialization */
storage-class-specifier:
auto
register
static
extern
typedef
__declspec ( extended-decl-modifier-seq ) /* Microsoft Specific */
type-specifier:
void
char
short
int
__int8 /* Microsoft Specific */
__int16 /* Microsoft Specific */
__int32 /* Microsoft Specific */
__int64 /* Microsoft Specific */
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
type-qualifier:
const
volatile
declarator:
pointeroptdirect-declarator
direct-declarator:
identifier
( declarator )
direct-declarator [ constant-expression opt**]**
direct-declarator ( parameter-type-list ) /* New-style declarator */
direct-declarator ( identifier-listopt**)** /* Obsolete-style declarator */
pointer:
* type-qualifier-listopt
* type-qualifier-listoptpointer
parameter-type-list: /* The parameter list */
parameter-list
parameter-list , ...
parameter-list:
parameter-declaration
parameter-list , parameter-declaration
type-qualifier-list:
type-qualifier
type-qualifier-list type-qualifier
enum-specifier:
enum identifieropt**{** enumerator-list }
enum identifier
enumerator-list:
enumerator
enumerator-list , enumerator
enumerator:
enumeration-constant
enumeration-constant = constant-expression
enumeration-constant:
identifier
struct-or-union-specifier:
struct-or-union identifieropt**{** struct-declaration-list } struct-or-union identifier
struct-or-union:
struct
union
struct-declaration-list:
struct-declaration
struct-declaration-list struct-declaration
struct-declaration:
specifier-qualifier-list struct-declarator-list ;
specifier-qualifier-list:
type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt
struct-declarator-list:
struct-declarator struct-declarator-list , struct-declarator
struct-declarator:
declarator
type-specifier declaratoropt**:** constant-expression
parameter-declaration:
declaration-specifiers declarator /* Named declarator */
declaration-specifiers abstract-declaratoropt**/*** Anonymous declarator */
identifier-list: /* For old-style declarator * /
identifier
identifier-list , identifier
abstract-declarator: /* Used with anonymous declarators */
pointer
pointeroptdirect-abstract-declarator
direct-abstract-declarator:
( abstract-declarator )
direct-abstract-declaratoropt**[** constant-expressionopt**]**
direct-abstract-declaratoropt**(** parameter-type-list opt**)**
initializer:
assignment-expression
{ initializer-list } /* For aggregate initialization */
{ initializer-list , }
initializer-list:
initializer
initializer-list , initializer
type-name:
specifier-qualifier-list abstract-declaratoropt
typedef-name:
identifier
extended-decl-modifier-seq:/* Microsoft Specific */
extended-decl-modifieropt
extended-decl-modifier-seq extended-decl-modifier
extended-decl-modifier: /* Microsoft Specific */
thread
naked
dllimport
dllexport
See Also
Calling Conventions
Phrase Structure Grammar
Obsolete Calling Conventions