多檔案使用全域性變數時extern的規範用法

2021-09-10 03:39:04 字數 548 閱讀 3931

關鍵字extern用來宣告變數或者函式是乙個外部變數或者外部函式,也就是說告訴編譯器是在其他檔案中定義的,編譯的時候不要報錯,在鏈結的時候按照字串定址可以找到這個變數或者函式。(函式預設是外部型別的,不需要顯示宣告,但是變數必須,如果想把乙個函式宣告為只在本檔案範圍有效,那麼可以用static來說明)

在某個標頭檔案,比如a.h中定義了全域性變數比如int a;,那麼在其他檔案中的函式呼叫變數a的時候需要在對應標頭檔案或者定義檔案中(保證在使用這個變數前)使用extern int a;來宣告這個變數,但是這樣做有乙個弊端,首先如果a.h中集中定義了大量的全域性變數供其他檔案使用,那麼其他的呼叫檔案中會重複的出現大量的extern ***語句,第二,如果其他檔案直接引用a.h,那麼會造成全域性變數的重複定義,編譯不過,等等。為了避免上面的種種問題,總結了下extern的使用規範,內容如下:

1、在定義檔案中定義全域性變數, 比如a.cpp中定義全域性變數 int a;

2、在對應的標頭檔案a.h中宣告外部變數 extern int a;

3、在引用a變數的檔案中包含a.h;

**:

C語言全域性變數多檔案使用

c語言全域性變數多檔案使用 定義乙個全域性變數,想在多個檔案中使用,如下 externintvar include var.h intvar 10 include var.h include var.h include var.h 只能在乙個檔案裡面賦初值,否則鏈結出錯。看到個c的題 全域性變數可不...

c 全域性變數,多模組使用

用extern修飾的全域性變數 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 include test1.h char g str 12345...

C extern定義多檔案共享全域性變數

我覺得題主需要的回答是 把變數定義在函式外面 比如這樣 include include std string msg 這個就叫全域性變數 intmain 不過呢,這麼做以後你會逐漸逐漸遇到各種問題,比如說多個.cpp檔案都要用到同乙個全域性變數咋辦?你需要做的是在乙個.cpp裡定義這個變數,然後在標...