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文件中)的函數和變量分配內存。

  自我理解:在程序執行中調用的函數或變量相當於聲明,分配內存/