函数定义指定函数的名称、它期望接收的参数的类型和数量,以及其返回类型。 函数定义还包括一个函数主体,其中包含其局部变量的声明,以及确定函数的作用的语句。
语法
translation-unit:
external-declaration
translation-unit
external-declaration
external-declaration:/* 仅允许在外部 (文件) 范围 */
function-definition
declaration
function-definition:
declaration-specifiers
选择attribute-seq选择declaratordeclaration-list选择compound-statement
/*
attribute-seq 特定于Microsoft */
原型参数包括:
declaration-specifiers:
storage-class-specifier
declaration-specifiers
选择
type-specifier
declaration-specifiers
选择
type-qualifier
declaration-specifiers
选择
declaration-list:
declaration
declaration-list
declaration
declarator:
pointer
选择direct-declarator
direct-declarator:/* 函数声明符 */
direct-declarator
(
parameter-type-list
) /* 新样式声明符 */
direct-declarator
(
identifier-list
选择) /* 过时样式声明符 */
定义中的参数列表使用此语法:
parameter-type-list:/* 参数列表 */
parameter-list
parameter-list
, ...
parameter-list:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
选择
旧样式函数定义中的参数列表使用此语法:
identifier-list:/* 用于过时样式的函数定义和声明 */
identifier
identifier-list
,
identifier
函数主体的语法为:
compound-statement:
{
declaration-list
选择statement-list选择}
唯一可以修改函数声明的存储类说明符是 extern 和 static。 说明 extern 符表示可以从其他文件引用函数;也就是说,函数名称将导出到链接器。 说明 static 符表示无法从其他文件引用函数;也就是说,链接器不会导出该名称。 如果函数定义中未显示存储类,则假定为
可选 declaration-specifiers 和必需 declarator 一起指定函数的返回类型和名称。 该 declarator 标识符是一个标识符的组合,该标识符命名函数和括号位于函数名称之后。 可选的 attribute-seq 非终止是 函数属性中定义的Microsoft特定功能。
direct-declarator (在declarator语法中)指定所定义的函数的名称及其参数的标识符。
direct-declarator如果包含 aparameter-type-list,则列表指定所有参数的类型。 此类声明符还充当函数原型,供以后调用函数。
函数declaration-list定义中的 A declaration 不能包含storage-class-specifier其他register函数定义。
type-specifier仅当为类型的值int指定存储类时register,才能省略语法declaration-specifiers中的语法。
compound-statement是包含局部变量声明、对外部声明项和语句的引用的函数正文。
函数 属性、 存储类、 返回类型、 参数和 函数正文 部分详细介绍了函数定义的组件。