宣言の概要
declaration:
declaration-specifiersattribute-seqopt1init-declarator-listopt;
static_assert-declaration
declaration-specifiers:
storage-class-specifierdeclaration-specifiersopt
type-specifierdeclaration-specifiersopt
type-qualifierdeclaration-specifiersopt
function-specifierdeclaration-specifiersopt
alignment-specifierdeclaration-specifiersopt
attribute-seq1:
attribute1attribute-seqopt1
attribute1、2: 次のいずれか
__asm __based __cdecl __clrcall __fastcall __inline __stdcall __thiscall __vectorcall
init-declarator-list:
init-declarator
init-declarator-list , init-declarator
init-declarator:
declarator
declarator = initializer
storage-class-specifier:
auto
extern
register
static
_Thread_local
typedef
__declspec(extended-decl-modifier-seq)1
extended-decl-modifier-seq1:
extended-decl-modifieropt
extended-decl-modifier-seq extended-decl-modifier
extended-decl-modifier1:
thread
naked
dllimport
dllexport
type-specifier:
void
char
short
int
__int81
__int161
__int321
__int641
long
float
double
signed
unsigned
_Bool
_Complex
atomic-type-specifier
struct-or-union-specifier
enum-specifier
typedef-name
struct-or-union-specifier:
struct-or-unionidentifieropt{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-liststruct-declarator-listopt;
static_assert-declaration
specifier-qualifier-list:
type-specifierspecifier-qualifier-listopt
type-qualifierspecifier-qualifier-listopt
alignment-specifierspecifier-qualifier-listopt
struct-declarator-list:
struct-declarator
struct-declarator-list , struct-declarator
struct-declarator:
declarator
declaratoropt:constant-expression
enum-specifier:
enumidentifieropt{enumerator-list}
enumidentifieropt{enumerator-list,}
enum identifier
enumerator-list:
enumerator
enumerator-list , enumerator
enumerator:
enumeration-constant
enumeration-constant = constant-expression
atomic-type-specifier:
_Atomic ( type-name )
type-qualifier:
const
restrict
volatile
_Atomic
function-specifier:
inline
_Noreturn
alignment-specifier:
_Alignas ( type-name )
_Alignas ( constant-expression )
declarator:
pointeroptdirect-declarator
direct-declarator:
identifier
( declarator )
direct-declarator[type-qualifier-listoptassignment-expressionopt]
direct-declarator[statictype-qualifier-listoptassignment-expression]
direct-declarator [ type-qualifier-list static assignment-expression ]
direct-declarator[type-qualifier-listopt*]
direct-declarator ( parameter-type-list )
direct-declarator(identifier-listopt)3
pointer:
*type-qualifier-listopt
*type-qualifier-listoptpointer
type-qualifier-list:
type-qualifier
type-qualifier-list type-qualifier
parameter-type-list:
parameter-list
parameter-list , ...
parameter-list:
parameter-declaration
parameter-list , parameter-declaration
parameter-declaration:
declaration-specifiers declarator
declaration-specifiersabstract-declaratoropt
identifier-list: /* 古いスタイルの宣言子用 */
identifier
identifier-list , identifier
type-name:
specifier-qualifier-listabstract-declaratoropt
abstract-declarator:
pointer
pointeroptdirect-abstract-declarator
direct-abstract-declarator:
( abstract-declarator )
direct-abstract-declarator[type-qualifier-listoptassignment-expressionopt]
direct-abstract-declarator[statictype-qualifier-listoptassignment-expression]
direct-abstract-declarator [ type-qualifier-list static assignment-expression ]
direct-abstract-declarator[type-qualifier-listopt*]
direct-abstract-declaratoropt(parameter-type-listopt)
typedef-name:
identifier
initializer:
assignment-expression
{ initializer-list }
{ initializer-list , }
initializer-list:
designationoptinitializer
initializer-list,designationoptinitializer
designation:
designator-list =
designator-list:
designator
designator-list designator
designator:
[ constant-expression ]
. identifier
static_assert-declaration:
_Static_assert ( constant-expression , string-literal ) ;
1 この文法要素は Microsoft 固有です。
2 これらの要素の詳細については、「__asm」、「__clrcall」、「__stdcall」、「__based」、「__fastcall」、「__thiscall」、「__cdecl」、「__inline」、および「__vectorcall」を参照してください。
3 このスタイルは古いものです。