C 教材:標準函式庫

我們可以這樣理解:

C 本身所有會做的事,都是由它認識的符號和保留字所定義。 其他事情,都是由另外撰寫的函式來完成。
但是,再看看 hello.c (最後一眼了):
#include <stdio.h>
 
/* 第一個 C 程式  (hello.c) */
main() {
   printf("hello, world\n");
}

現在我們還不知道 C 總共有哪些保留字,但是, 將來會知道,printf 不是個保留字。 所以,printf 這個函式,不屬於 C 本身會做的事。 換句話說,printf 是個外部函式。 但是,我們的原始碼裡面,沒有寫它啊? 那是誰寫的呢? 原來,它是由 UNIX 作業系統提供的, 或者,它是 C 的編譯程式附贈的。 總之,那是別人寫的。 如果您有著「有為者亦若是」的雄心壯志, 或許將來您會另外寫一個自己的 printf 函式,也不一定。

由於 C 被設計得很小、很利於修改以便適應各種不同的作業系統和硬體, 所以 C 本身會做的事,實在太少了。 因此,提供 C 編譯器的套裝軟體,通常在編譯程式 (例如 gcc) 之外, 還會附帶一些標準的外部函式,統稱為標準函式庫 (standard library)。 printf 就是一個標準外部函式。 以後我們會知道,總共有哪些標準外部函式。

每一個不同品牌的 C 編譯器 (例如 MS Visual C、Turbo C、Waterloo C、SparcPro C), 多少提供一些它們自己獨創的外部函式。 使用這些獨創的外部函式,多少帶來些便利,但是這種 C 原始碼就不能換到別的機器去, 用別的編譯器來製造可執行檔。因此,這種原始碼喪失了一些可攜性 (portability)。

到這裡,我想,讀者已經對 C 語言有了一個初始的輪廓。 但是心中必定還存有許多問題,例如

這些疑雲,我們都將為您逐一解開。 但是,我想我們已經說明了夠多的背景知識。 許多讀者大概已經迫不及待地想要學一些真正的 C 語言。 讓我們就從下一節開始吧。

習題

[BCC16-C]
單維彰 (2000/03/23) ---
[Prev] [Next] [Up]