關於全域性變數,如何被多個 c檔案共享問題

2021-07-23 08:35:23 字數 922 閱讀 1396

這裡有三個問題,都是比較類似的。

1.如果我要在別的檔案引用本檔案的全域性變數你有哪幾種方法?extern、使用函式傳參、使用引用標頭檔案的方式。

2.全域性變數可不可以定義在可被多個

.c檔案包含的標頭檔案中?為什麼?答:可以,在不同的c檔案中以static形式來宣告同名全域性變數。 可以在不同的c檔案中宣告同名的全域性變數,前提是其中只能有乙個c檔案中對此變數賦初值,此時連線不會出錯。 參見 :

// delay.h 

,注意這裡絕對不能賦初值,

這是標頭檔案中使用的方法。

#ifndef __delay_h__

#define __delay_h__

static int numstatic;//定義了乙個靜態的變數

extern int numextern;//引用外部變數

#endif

注意!!!:

1)對於extern,使用的時候,需要在某乙個.c檔案中定義一下使用到的全域性變數,才能正常的使用,這是因為沒有實體,但是不能在兩個及以上的檔案中定義。

2)對於static,使用的時候,需要在某個函式中,最好是main函式的一開始進行變數的初始化,不然沒有意義了。但是這裡有乙個問題!那就是,在使用的時候,每個.c檔案包含了這個靜態變數以後,和別的.c檔案並不共享,彷彿得到了這個靜態變數的乙份拷貝,相互無關。這個原因應該是,static關鍵字的作用,那就是被修飾的變數本.c可見,其他.c檔案不可見。

3.如何引用乙個已經定義過的全域性變數?答:extern 可以用引用標頭檔案的方式,也可以用extern關鍵字,如果用引用標頭檔案方式來引用某個在標頭檔案中宣告的全域性變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連線期間報錯。

python 多個檔案共享全域性變數

global關鍵字可以宣告全域性變數,但僅限於乙個檔案中 其他檔案可以通過import匯入,但修改並不影響原始值 若想在不同模組 py檔案 中使用同乙個全域性變數,可以使用以下方法 專門為全域性變數定義乙個 全域性變數管理模組 1.全域性變數管理模組 globalvar.py def init 初始...

多個cpp檔案如何定義全域性變數與常量

寫比較複雜的c 時,我們往往會把 分成幾個片段放在幾個不同的cpp檔案中,這就引發了關於全域性常量 如pi的共享 和全域性變數的宣告與定義問題。假設我們有標頭檔案main.h和原始檔a.pp,b.pp 其中a.pp和b.pp都需要用到pi和乙個全域性常量size.那麼該如何定義呢?如果定義在main...

C 如何定義全域性變數

在實際的操作過程中經常會遇到,form1中的變數需要傳入form2,或者控制項中的值需要傳入另外乙個窗體,這是只需要定義乙個全域性變數就可以了 1 定義全域性變數 public partial class form1 form 2 給全域性變數賦值 username convert.tostring...