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:
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