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