共用方式為


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選擇}

唯一可以修改函式宣告的記憶體類別規範是 externstaticextern規範表示可以從其他檔案參考函式;也就是說,函式名稱會匯出至連結器。 static規範表示無法從其他檔案參考函式;也就是說,連結器不會匯出名稱。 如果函式定義中未出現任何儲存類別, extern 則會假設為 。 在任何情況下,函式一律會顯示在檔案的定義點到結尾。

選擇性 declaration-specifiers 和強制一起指定函式的傳 declarator 回類型和名稱。 declarator是一個標識碼的組合,這個標識符會命名函式,並在函式名稱之後加上括號。 選擇性 attribute-seq 非決定性是函式 屬性中定義的Microsoft特定功能。

direct-declarator (在語法中declarator) 會指定所定義的函式名稱及其參數的標識碼。 direct-declarator如果 包含 parameter-type-list,則清單會指定所有參數的類型。 這類宣告子也會做為函式原型,以供稍後呼叫函式。

declarationdeclaration-list式定義中的 ,不能包含 storage-class-specifier 以外的 registertype-specifier只有在為 型別的值指定儲存類別時register,才能省略 語法中的 declaration-specifiersint

compound-statement是包含局部變數宣告、外部宣告專案參考和語句的函式主體。

函式 屬性儲存類別傳回型別、 參數函式主體 各節會詳細描述函式定義的元件。

另請參閱

函數