C 函数定义

函数定义指定函数的名称、它期望接收的参数的类型和数量,以及其返回类型。 函数定义还包括一个函数主体,其中包含其局部变量的声明,以及确定函数的作用的语句。

语法

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选择}

唯一可以修改函数声明的存储类说明符是 externstatic。 说明 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是包含局部变量声明、对外部声明项和语句的引用的函数正文。

函数 属性存储类返回类型参数函数正文 部分详细介绍了函数定义的组件。

另请参阅

函数