免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

函數定義

https://zh.wikipedia.org/wiki/%E5%A4%B4%E6%96%87%E4%BB%B6
在大多數現代電腦程式語言中,程式可以被分成如子程式的更小的元件,這些元件可以通過許多物理源檔案分發,這些原始檔被單獨編譯。當一個子程式在定義的位置以外的地方被使用時,就需要引入前置聲明和函式原型的概念。例如,一個函式在一個原始檔中有如下定義:
int add(int a, int b)
{
     return a + b;
}
在另一個原始檔中參照的時候就可以聲明成這樣(包含函式原型):
int add(int, int);

int triple(int x)
{
     return add(x, add(x, x));
}
但是,這個簡單的方法需要程式設計師為add在兩個地方維護函式聲明,一個是包含函式實現的檔案,以及使用該函式的檔案。如果函式的定義改變了,程式設計師必須要更改散布在程式中的所有的原型。
表頭檔提供了解決辦法。模組的表頭檔聲明作為模組公共介面一部分的每一個函式、物件以及資料類型。例如,在下面的情況下,表頭檔僅包含add的聲明。每一個參照了add的原始檔使用#include來包含表頭檔:
/* File add.h */
#ifndef ADD_H
#define ADD_H

int add(int, int);

#endif /* ADD_H */
/* File triple.c */
#include "add.h"

int triple(int x)
{
     return add(x, add(x, x));
}
這樣就減少了維護的負擔:當定義改變的時候,只須更新聲明的一個獨立副本(在表頭檔中的那個)。在包含對應的定義的原始檔中也可以包含表頭檔,這給了編譯器一個檢查聲明和定義一致性的機會。
/* File add.c */
#include "add.h"

int add(int a, int b)
{
     return a + b;
}
返回列表