官术网_书友最值得收藏!

3-7 理解函數庫和頭文件

很多C程序設計教材都沒有告訴我們,C程序除了語言本身,函數庫是它的另外一大特色。C語言的很多實現功能都放在了函數庫中。所以,我們在編寫一個簡單的程序時,也常常要用到<stdio.h>或者<stdlib.h>兩個頭文件。

這就涉及C語言的頭文件機制。

廣義的頭文件講的每一個程序都使用一個或多個#include語句命令指向C編譯器包含使用的程序文件中的全部程序代碼,不一定非得是*.h格式,也可以是*.c或者*.cpp格式等,*.h和*.Hpp早已約定俗成。頭文件也是ASCII文本文件,它的內容可以打印或在屏幕上顯示出來。

頭文件是一個很特殊的機制,以至于其他的編程語言常常向C語言學習。打開任何一個編譯器的include文件夾,都可以看到很多.h文件,仔細地分析這些文件可以學到很多。頭文件中的函數帶來了不少好處,后續章節會專門總結。

可以打印某個常用頭文件的內容,比如stdio.h。在include文件中可以找到C程序語句。當編譯器在程序中遇到#include語句,它將編譯該頭文件所包含的代碼,如果把頭文件的內容編輯輸入源文件中,效果是一樣的。頭文件包含常用的定義,并提供有關編譯器提供的函數的信息,比如printf?,F在可能覺得頭文件的內容難以理解,但隨著對C的進一步熟悉,可以打印并閱讀所使用的每一個頭文件——建議當成源代碼圖書來仔細閱讀。頭文件中包含許多有價值的信息和編程技巧,學習它們,將會使你成為一個更優秀的C語言程序員。

下面截取<string.h>的部分內容供大家參考。

我們能夠從頭文件看到三方面內容,一是眾多編譯指示器命令,大家可以學習使用,至少能夠看懂;二是一些重要的數據結構,比如File的結構;三(也是最重要的)是一些函數原型,我一般不記得函數的樣子,調用的時候常常要打開頭文件看看,另外就是翻看技術手冊。比如《C/C++函數辭典》,這也是中國鐵道出版社出版的一本書,很實用,主要是有頭文件源文件中函數調用的舉例,在編寫程序的時候調用函數可以有幫助。

我們自己也要學會編寫頭文件,以把一些公共的定義提供給同事。注意,“xxx.h”表明調用從當前目錄開始,<xxxx.h>表示從include中開始。當然,編譯器中可以添加頭文件路徑。就算你還處在Turbo C或者Borland C++的學習環境中。還可以有以下方法使用頭文件:

(1)幫助編譯器查找頭文件:當C編譯器遇到一個#include語句時,編譯器把頭文件的內容插入程序當中,如同我們自己把文件內容輸入源文件中。當編譯程序時顯示一個錯誤消息說不能打開某個頭文件的時候,首先應檢查包含編譯器文件的子目錄,確認訪問文件是否存在。如果發現訪問文件,可以在DOS提示符下輸入SET命令,如下所示:

注意:在早期的程序中可能需要這樣檢查,而現在不需要這樣檢查,重要的是檢查TC中的路徑設置,如果TC中路徑設置不正確,也會出現找不到包含文件的錯誤,如果環境沒有包含一個INCLUDE入口,但在autoexec.bat中卻未定義該入口,則需要親自創建它,將它放入autoexec.bat文件中(autoexec.bat文件是一個自動批處理文件,在電腦剛啟動的時候會先加載自動批處理文件)

(2)加速編譯:編譯源文件時,C編譯器可能生成一個或多個臨時文件,這些文件在編譯器和連接器工作時存在,可以考慮把TEMP入口指向有最大硬盤剩余空間的硬盤。這樣編譯器在速度快的硬盤上存放臨時文件,從而加速編譯過程。假設D盤的剩余空間大一些,可以在autoexec.bat文件中加上SET命令,使TEMP入口指向D盤,如下所示:

SET TEMP=D:

主站蜘蛛池模板: 隆安县| 思南县| 桂平市| 平邑县| 平定县| 黎城县| 中牟县| 商南县| 托克逊县| 北海市| 洱源县| 册亨县| 拉孜县| 永年县| 多伦县| 浦东新区| 岑巩县| 马关县| 嵩明县| 德庆县| 阳山县| 驻马店市| 德格县| 察雅县| 龙州县| 公安县| 南汇区| 阜康市| 呼图壁县| 南澳县| 久治县| 陆良县| 延吉市| 邯郸县| 高陵县| 吉林省| 清新县| 丰城市| 固原市| 平度市| 丹寨县|