1. 程式人生 > >標頭檔案只能放變數的宣告但是不能放定義

標頭檔案只能放變數的宣告但是不能放定義

一般的做法都是在標頭檔案(.h)中宣告變數,然後在原始檔(.c)中定義變數
如果在標頭檔案中定義變數,這個變數就有了實體,如果a.c和b.c一起引用了標頭檔案head.h,就等於同時建立了兩個同樣名字的變數實體,在一個工程下,連結的時候就會導致重定義的問題
如何在標頭檔案中宣告變數而不是定義呢 ?使用extern關鍵字,extern關鍵字表示當前變數在別處定義,需要連結到外面的檔案才能找到具體的變數,只是在此宣告,並不分配實質記憶體,如下:

#define HEAD_H_
#define HEAD_H_
extern int a;
#endif //HEAD_H
與extern相反的是static,在原始檔中使用的時候表示該變數只屬於當前原始檔,對外不可見,
在標頭檔案中使用的時候表示包含了此標頭檔案的原始檔都會生成一個對應的變數,對外不可見。