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

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

Reference

Phrase Structure Grammar