有効な宣言
宣言構文:インデックス への移動
宣言できるオブジェクトの範囲は次のとおりです:
- 変数
- 関数
- クラスおよびクラス メンバ (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 <,> }