有効な宣言

提供: RAD Studio
移動先: 案内検索

宣言構文:インデックス への移動

宣言できるオブジェクトの範囲は次のとおりです:

  • 変数
  • 関数
  • クラスおよびクラス メンバ (C++)
  • 構造体、共用体、列挙タグ
  • 構造体のメンバー
  • 共用体のメンバー
  • 他の型の配列
  • 列挙定数
  • 文ラベル
  • プリプロセッサ マクロ

宣言の完全な構文は、以下のとおりです。宣言子構文の再帰的性質によって、複雑な宣言子も作成できます。より読みやすくするために、typedefs を利用することも可能です。

C++Builder 宣言構文では、修飾子および限定子の数と順について制約がある点に注意してください。また、リストされている修飾子は、ANSI C または C++ の宣言子に追加された分のみです。これらの修飾子については、それぞれ、「変数修飾子」と「関数修飾子」でより詳しく説明されています。

C++Builder の宣言構文

declaration:
    <decl-specifiers> <declarator-list>;
    asm-declaration
    function-definition
    linkage-specification
asm-declaration: 
  __asm  <(> string-literal <)> < ; or newline >
decl-specifier:
    storage-class-specifier
    type-specifier
    function-specifier
    friend (C++ specific)
    typedef
decl-specifiers:
    <decl-specifiers> decl-specifier
storage-class-specifier:
    auto
    register
    static
    extern
function-specifier: (C++ specific)
    inline
    virtual
simple-type-name:
    class-name
    typedef-name
    boolean
    char
    short
    int
    __int8
    __int16
    __int32
    __int64
    long
    signed
    unsigned
    float
    double
    void
declarator-list:     
    init-declarator
    declarator-list , init-declarator
init-declarator:    
    declarator <initializer>
declarator:
    dname
    modifier-list
    pointer-operator declarator
    declarator ( parameter-declaration-list )
    <cv-qualifier-list>      (C++ specifiс)
    declarator [ <constant-expression> ]
    ( declarator )
modifier-list:
    modifier
    modifier-list modifier
modifier:
    __cdecl
    __pascal
    __stdcall
    __fastcall
pointer-operator:
    * <cv-qualifier-list>
    & <cv-qualifier-list> (C++ specific)
    class-name :: * <cv-qualifier-list> (C++ specific)
cv-qualifier-list:     
    cv-qualifier <cv-qualifier-list>
cv-qualifier:
    const
    volatile
dname:     
    name
    class-name (C++ specific)
    ~ class-name (C++ specific)
    type-defined-name
elaborated-type-specifier:
    class-key identifier
    class-key class-name
    enum enum-name
class-key: (C++ specific)
    class
    struct
    union
enum-specifier:
    enum <identifier> { <enum-list> }
enum-list:
    enumerator
    enumerator-list , enumerator
enumerator:
    identifier
    identifier = constant-expression
constant-expression:
    conditional-expression
linkage-specification: (C++ specific)
    extern string { <declaration-list> }
    extern string declaration
type-specifier:
    simple-type-name
    class-specifier
    enum-specifier
    elaborated-type-specifier
    const
    volatile
declaration-list:
    declaration
    declaration-list ; declaration
type-name:
    type-specifier <abstract-declarator>
abstract-declarator:
    pointer-operator <abstract-declarator>
    <abstract-declarator> ( argument-declaration-list )
    <cv-qualifier-list>
    <abstract-declarator> [ <constant-expression> ]
    ( abstract-declarator )
argument-declaration-list:
    <arg-declaration-list>
    arg-declaration-list , ...
    <arg-declaration-list> ... (C++ specific)
arg-declaration-list:
    argument-declaration
    arg-declaration-list , argument-declaration
argument-declaration:
    decl-specifiers declarator
    decl-specifiers declarator = expression  (C++ specific)
    decl-specifiers <abstract-declarator>
    decl-specifiers <abstract-declarator> = expression   (C++ specific)
function-definition: 
    <decl-specifiers> declarator <declaration-list>  function-body
function-body: 
    compound-statement
initializer:
    = expression
    = { initializer-list }
    ( expression-list ) (C++ specific)
initializer-list:
    expression
    initializer-list , expression
    { initializer-list <,> }

関連項目