C語言基礎:C語言的頭文件

本文從Simulink生成的代碼出發,研究C語言中頭文件的作用。

1 頭文件的作用

博主理解,頭文件的作用可以歸納爲一句話,那就是把各個C文件聯繫起來。

至於是怎麼聯繫起來的,後文在分析Simulink生成的代碼中會一點點研究。

2 C文件中引用頭文件

隨便用Simulink模型生成代碼,都能看到生成了一堆.c文件和.h文件。
在這裏插入圖片描述
首先點開demo.c,也就是和Simulink模型名相同的C文件。這個C文件對應模型中的控制算法。

除了頂頭的註釋以外,c文件一上來就引用了兩個頭文件。
在這裏插入圖片描述
剛開始幹這一行的時候,博主對這裏的語法很懵逼。爲啥#include後面的頭文件用的是雙引號。

%第一種引用方式
#include "demo.h"

記得大學學的時候用的是書名號,如下:

第二種引用方式
#include <demo.h>

其實還是基礎不紮實。網上隨便差點資料就知道,引用用戶自己寫的的頭文件的時候採用第一種雙引號的方式,引用系統中標準頭文件的時候採用第二種書名號的方式。

3 頭文件的內容

打開和模型名相同的頭文件demo.h,研究一下爲什麼通過頭文件,就能讓各個C文件之間互相訪問內容。

其實,奧妙就在頭文件中的extern關鍵字上面,如下圖所示。
在這裏插入圖片描述
extern從字面上理解,是“外部”的意思。由它修飾的變量是全局變量。只要其他C文件最上面寫了#include “demo.h”,編譯器就會知道了解到,那些用了extern修飾的變量是外部定義的。等到所有C文件都編譯過以後,會在鏈接的過程中找到這些變量真正的源頭,並將其關聯起來。

所以,如果想要調用其他C文件裏面定義的全局變量,只要include它的頭文件即可。extern修飾的函數也是一樣的道理。底層軟件中的操作系統想要調度應用層的函數,也只要include它的頭文件即可。

在Simulink中,可以通過定義Storage Class很容易地配置這些全局變量生成的方式。詳見博主的另一篇博客Simulink代碼生成: Storage Class配置

4 總結

C語言頭文件的功能其實不止於此,後續博客會在本片的基礎背景下,研究一些其他的技術知識。

>>返回個人博客總目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章