The range of objects that can be declared includes
In CodeGear C++ declaration syntax., note the restrictions on the number and order of modifiers and qualifiers. Also, the modifiers listed are the only addition to the declarator syntax that are not ANSI C or C++. These modifiers are each discussed in greater detail in Variable Modifiers and Function Modifiers.
CodeGear C++ declaration syntax
|
declaration: |
elaborated-type-specifier: |
|
<decl-specifiers> <declarator-list>; |
class-key identifier |
|
asm-declaration |
class-key class-name |
|
function-declaration |
enum enum-name |
|
linkage-specification |
class-key: (C++ specific) |
|
decl-specifier: |
class |
|
storage-class-specifier |
struct |
|
type-specifier |
union |
|
function-specifier |
enum-specifier: |
|
friend (C++ specific) |
enum <identifier> { <enum-list> } |
|
typedef |
enum-list: |
|
decl-specifiers: |
enumerator |
|
<decl-specifiers> decl-specifier |
enumerator-list , enumerator |
|
storage-class-specifier: |
enumerator: |
|
auto |
identifier |
|
register |
identifier = constant-expression |
|
static |
constant-expression: |
|
extern |
conditional-expression |
|
function-specifier: (C++ specific) |
linkage-specification: (C++ specific) |
|
inline |
extern string { <declaration-list> } |
|
virtual |
extern string declaration |
|
simple-type-name: |
type-specifier: |
|
class-name |
simple-type-name |
|
typedef-name |
class-specifier |
|
boolean |
|
|
char |
enum-specifier |
|
short |
elaborated-type-specifier |
|
int |
const |
|
__int8 |
|
|
__int16 |
|
|
__int32 |
|
|
__int64 |
|
|
long |
volatile |
|
signed |
declaration-list: |
|
unsigned |
declaration |
|
float |
declaration-list ; declaration |
|
double |
|
|
void |
|
|
declarator-list: |
type-name: |
|
init-declarator |
type-specifier <abstract-declarator> |
|
declarator-list , init-declarator |
abstract-declarator: |
|
init-declarator: |
pointer-operator <abstract-declarator> |
|
declarator <initializer> |
<abstract-declarator> ( argument-declaration-list ) |
|
declarator: |
<cv-qualifier-list> |
|
dname |
<abstract-declarator> [ <constant-expression> ] |
|
modifier-list |
( abstract-declarator ) |
|
pointer-operator declarator |
argument-declaration-list: |
|
declarator ( parameter-declaration-list ) |
<arg-declaration-list> |
|
<cv-qualifier-list > |
arg-declaration-list , ... |
|
(The <cv-qualifier-list > is for C++ only.) |
<arg-declaration-list> ... (C++ specific) |
|
declarator [ <constant-expression> ] |
arg-declaration-list: |
|
( declarator ) |
argument-declaration |
|
modifier-list: |
arg-declaration-list , argument-declaration |
|
modifier |
argument-declaration: |
|
modifier-list modifier |
decl-specifiers declarator |
|
modifier: |
decl-specifiers declarator = expression |
|
__cdecl |
(C++ specific) |
|
__pascal |
decl-specifiers <abstract-declarator> |
|
__stdcall |
decl-specifiers <abstract-declarator> = expression |
|
__fastcall |
(C++ specific) |
|
function-definition: |
|
|
function-body: |
|
|
pointer-operator: |
compound-statement |
|
initializer: |
|
& <cv-qualifier-list> (C++ specific) |
= expression |
|
class-name :: * <cv-qualifier-list> |
= { initializer-list } |
|
(C++ specific) |
( expression-list ) (C++ specific) |
|
cv-qualifier-list: |
initializer-list: |
|
cv-qualifier <cv-qualifier-list> |
expression |
|
cv-qualifier |
initializer-list , expression |
|
const |
{ initializer-list <,> } |
|
volatile |
|
|
dname: |
|
|
name |
|
|
class-name (C++ specific) |
|
|
~ class-name (C++ specific) |
|
|
type-defined-name |
|
|
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
|
What do you think about this topic? Send feedback!
|