Summary of Declarations
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
:
pointer
optdirect-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
pointer
optdirect-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