c語言的頭號標誌性檔案 標頭檔案

2021-06-16 13:53:42 字數 2210 閱讀 8780

c

語言的標頭檔案是乙個看似複雜,但是實際上是非常容易懂的乙個部分。之所以大家對於

c語言的標頭檔案

一知半解,我覺得跟現在的各種

c語言入門書籍

都是只對

c語言的語法進行詳細的不能再詳細的說明,但對於整個程式的檔案組織構架卻隻字不提,找了好幾本比較著名的

c語言著作,卻沒有乙個把

.h檔案的用法寫的比較透徹的。下面我就斗膽提筆,來按照我對

.h的認識思路,向大家介紹一下。

讓我們的思緒乘著時間機器回到大學一年級。

c原來老師正在講台上講著我們的第乙個

c語言程式

: hello world!

檔名first.c

main()第1

看看上面的程式,沒有

.h檔案。是的,就是沒有,世界上的萬物都是經歷從沒有到有的過程的,我們對

.h的認識,我想也需要從這個步驟開始。這時確實不需要

.h檔案,因為這個程式太簡單了,根本就不需要。那麼如何才能需要呢?讓我們把這個程式變得稍微複雜些,請看下面這個,

檔名first.c

printstr()

main()第2

還是沒有

,那就讓我們把這個程式再稍微改動一下

.檔名

first.c

main()

printstr()第3

等等,不就是改變了個順序嘛

,但結果確是十分不同的

.讓我們編譯一下例程

-2和例程

-3,你會發現例程

-3是編譯不過的

.這時需要我們來認識一下另乙個c語言

中的概念

:作用域

.我們在這裡只講述與

.h檔案相關的頂層作用域

,頂層作用域就是從宣告點延伸到源程式文字結束,就

printstr()

這個函式來說,他沒有單獨的宣告

,只有定義

,那麼就從他定義的行開始,到

first.c

檔案結束

,也就是說

,在在例程-2的

main()

函式的引用點上

,已經是他的作用域.例程

-3的main()

函式的引用點上,還不是他的作用域

,所以會編譯出錯

.這種情況怎麼辦呢

?有兩種方法

,乙個就是讓我們回到例程

-2,順序對我們來說沒什麼

,誰先誰後不一樣呢,只要能編譯通過

,程式能執行,就讓

main()

檔案總是放到最後吧

.那就讓我們來看另乙個例程

,讓我們看看這個方法是不是在任何時候都會起作用

.檔名

first.c

play2()

play1()

main()第4

也許大部分都會看出來了,這就是經常用到的一種演算法

,函式巢狀

,那麼讓我們看看

, play1

和play2

這兩個函式哪個放到前面呢

?這時就需要我們來使用第二種方法

,使用宣告

.檔名

first.c

play1();

play2();

play2()

play1()

main()

例程-4

經歷了我的半天的嘮叨

,加上四個例程的說明

,我們終於開始了用量變引起的質變

,這篇文章的主題

.h檔案快要出現了。

乙個大型的軟體專案

,可能有幾千個

,上萬個

play,

而不只是

play1,play2

這麼簡單

,這樣就可能有

n個類似

play1(); play2();

這樣的宣告

,這個時候就需要我們想辦法把這樣的

play1(); play2();

也另行管理

,而不是把他放在

.c檔案中,於是

.h檔案出現了

.檔名

first.h

play1();

play2();

檔名first.c

#include

「first.h」

play2()

play1();

main()

檔案 標頭檔案 原始檔(C )

標頭檔案和原始檔中的函式宣告與定義 函式原型 file fsopen const char filename,const char mode,int shflag file wfsopen const wchar t filename,const wchar t mode,int shflag 注 ...

C語言 原始檔 標頭檔案 c cc h 的使用

乙個函式包括定義與宣告,定義中包含了函式是如何實現的,宣告則闡明函式如何被呼叫。工程上為了將個函式模組化,通常將宣告與定義分開,一般將主函式定義放在.c中,其他函式定義放在原始檔.cc中,函式宣告放在.h中。c 中包含主函式,並include所有使用到的標頭檔案 cc中包含其他函式定義,並inclu...

找不到標頭檔案 標頭檔案基礎講解(C語言)

在上linux課的時候被老師提了乙個問題,和 stdio.h 有什麼區別?老實說,當聽到這個問題的時候我心裡想這不是一樣的嗎?學和用了這麼久c語言竟然把這當成理想應當了。其實這些細節也很能體現基礎掌握得怎樣,聽說對於面試來說,大廠也比較傾向問這些基礎內功。和 stdio.h 的區別 當預處理器發現 ...