1、關於extern
extern 是聲明此變量或者函數在此文件的外部定義,只是聲明作用。
注意:c語言中對於函數的聲明和定義區別明顯,但對於變量幾乎沒有區別定義和聲明
深刻理解:從彙編的角度來説,變量或者函數定義就會佔用內存空間,也就生成的相應的段地址和偏移地址,如果想要在其他的地方調用時,需要聲明是EXTERN 外部定義的,這樣根據extern後面的名稱,編譯器會自動的尋找到所定義的地址,從而利用。
2、頭文件 .h
理解頭文件不要將其和c源程序搞混,例如將lcd.h lcd.c看作是一個不可分割的整體,這樣的想法是錯誤的。頭文件為了節約處理器內存和避免重定義/*(?)*/而形成的 單獨的一個文件。在裏面只是“聲明” 外部引用這個頭文件所要用到的 變量 函數。而真正的定義是在**.c中。這樣就有一個問題,如何知道哪個c文件和h文件是相關聯的呢?為了解決這個問題,所以就要在c文件中引用相應的h文件,例如在lcd.c中加入代碼 #include "lcd.h"
3、引用頭文件
如果在其他文件中需要引用到某一個外部文件中定義的函數,直接在此文件中 引用 所在的頭文件即可 (其實直接引用函數或者變量所在的c文件即源定義程序也可以,但是一般不這樣用,因為可能會用重定義的風險)。
4、引用頭文件概念的意義
函數的聲明可以在程序中寫多次,但函數定義只能有一個。為了避免出現重複定義的編譯錯誤(?)
5、頭文件中常用
#ifndef
#define
#endif
避免重定義錯誤(包括變量 和 函數的(但一般函數不會定義在頭文件中));
6、關於處理器內存的佔用
定義(c文件中)的函數和變量不佔用內存
聲明(一般在h文件中)的函數和變量分配內存。
自我理解:在程序執行中調用的函數或變量相當於聲明,分配內存/