模組化程式設計中全域性變數跨檔案使用

2021-06-27 18:50:13 字數 927 閱讀 7508

想定義個全域性變數,其他檔案都可以使用,但是如果定義在.h檔案中,就容易出現重複定義的問題(在gcc中如果未初始化,不會出現重複定義的問題),具體該怎麼做呢,如下:

eg:乙個工程中有五個檔案,main.c  first.c first.h  second.c second.h

想在first.c 中定義個全域性變數,其他檔案都可使用

做法一(在first.c中定義一下,在其他想呼叫的檔案裡extern一下,與抱不包含標頭檔案無關):

first.h中

first.c中

#include 'firsr.h'

int a ;

....

second.c中

extern int a ;

....

main.c中

extern int a ;

....

注意extern後不要初始化了,初始化是定義,就不是宣告了,編譯器會報錯

做法二(在first.c中定義一下,在對應的標頭檔案裡extern一下,其他想呼叫此全域性變數的檔案呼叫一下此標頭檔案):

first.h中

extern int a ;

....

first.c中

#include 'firsr.h'

int a ;

....

second.c中

#include "first.h"

....

main.c中

#include "first.h"

....

全域性變數與模組化

某模組提供給其它模組呼叫的外部函式及資料需在.h 中檔案中冠以extern 關鍵字宣告 這句話在上面的例子中已經有體現,即某模組提供給其它模組呼叫的外部函式和全域性變數需在.h 中檔案中冠以extern 關鍵字宣告,下面重點說一下全域性變數的使用。使用模組化程式設計的乙個難點 相對於新手 就是全域性...

python跨檔案使用全域性變數

python 定義了全域性變數的特性,使用global 關鍵字修飾 global key word 但是他的一大缺陷就是只能本module 中也就是本檔案中使用,跳出這個module就不行。try 1 使用乙個更巨集觀的思路,全域性變數就用全域性載入的模組解決,很遺憾也是不行,file 1 glob...

Python跨檔案全域性變數

儘管某些書籍上總是說避免使用全域性變數,但是在實際的需求不斷變化中,往往定義乙個全域性變數是最可靠的方法,但是又必須要避免變數名覆蓋。python 中 global 關鍵字可以定義乙個變數為全域性變數,但是這個僅限於在乙個模組 py檔案 中呼叫全域性變數 我們知道python使用變數的時候是可以直接...