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

2021-08-17 23:46:35 字數 807 閱讀 6587

寫比較複雜的c++**時,我們往往會把**分成幾個片段放在幾個不同的cpp檔案中,這就引發了關於全域性常量(如pi的共享)和全域性變數的宣告與定義問題。

假設我們有標頭檔案main.h和原始檔a.pp,b.pp;其中a.pp和b.pp都需要用到pi和乙個全域性常量size.

那麼該如何定義呢?

如果定義在main.h中

// main.h

const

int pi=3.1415926;

int size;

然後a.pp和b.pp分別包含main.h檔案,

結果是這樣會產生重複定義的問題,即使使用了預編譯(即#ifndef……#endif)也是如此!

這也是為什麼一般不建議在需要被多個原始檔包含的標頭檔案中定義的變數的原因。

解決的辦法是:利用extern關鍵字在乙個標頭檔案中宣告(常量需要宣告時即定義),然後在其他原始檔中宣告這個變數或常量,這樣就可以使用它們了。

例如:

a.pp

extern

const

int pi=3.1415926;

extern

int size;

b.pp

extern

const

int pi;

extern

int size;

注:若只有乙個原始檔包含標頭檔案,是可以在標頭檔案中定義常量與全域性變數的,只包含一次標頭檔案是不會引起重複定義的情況的

C 如何定義全域性變數

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

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

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

定義全域性變數

inte ce property strong,nonatomic uiwindow window propertyboolislogin end synthesize window window synthesizeislogin end 那麼在其他的class裡,則可以通過下列 呼叫全域性變數 ...