Summary of Declarations

declaration :

declaration-specifiers attribute-seq opt init-declarator-list opt ;
                        /* attribute-seq is Microsoft Specific */

declaration-specifiers :

storage-class-specifier declaration-specifiers opt
type-specifier declaration-specifiers opt
type-qualifier declaration-specifiers opt

attribute-seq :            /* attribute-seq is Microsoft Specific */

attribute attribute-seq opt
attribute : one of      /* Microsoft Specific */

__asm __fastcall
__based __inline
__cdecl __stdcall

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 opt direct-declarator

direct-declarator :

identifier
( declarator )
direct-declarator [ constant-expression opt]
direct-declarator ( parameter-type-list )   /* New-style declarator */
direct-declarator ( identifier-list opt )      /* Obsolete-style declarator */

pointer :

* type-qualifier-list opt
* type-qualifier-list opt pointer

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 identifier opt { 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 identifier opt { 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-list opt
type-qualifier specifier-qualifier-list opt

struct-declarator-list :

struct-declarator
struct-declarator-list , struct-declarator

struct-declarator :

declarator
type-specifier declarator opt : constant-expression

parameter-declaration :

declaration-specifiers declarator                /* Named declarator */
declaration-specifiers abstract-declarator opt /* Anonymous declarator */

identifier-list :      /* For old-style declarator */

identifier
identifier-list , identifier

abstract-declarator :         /* Used with anonymous declarators */

pointer
pointer opt direct-abstract-declarator

direct-abstract-declarator :

( abstract-declarator )
direct-abstract-declarator opt [ constant-expression opt ]
direct-abstract-declarator opt ( 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-declarator opt

typedef-name :

identifier

extended-decl-modifier-seq :/*   Microsoft Specific */

extended-decl-modifier opt
extended-decl-modifier-seq extended-decl-modifier

extended-decl-modifier :   /* Microsoft Specific */

thread
naked
dllimport
dllexport