標頭檔案中用static定義全域性變數的問題

2021-09-11 22:54:03 字數 710 閱讀 5580

cocos3.13前的版本中,一些全域性變數使用static 定義,研究了static定義全域性變數的優缺點。例如定義下面的標頭檔案

#pragma once

static int globle= 0;

static int image =

[...............

...............//省略

];

在其他原始檔中,引用cocos.h標頭檔案後,每個原始檔都會儲存乙份cocos.h中全域性變數的副本,這種方式定義的全域性變數的壞處就是

1.每個原始檔修改了cocos.h中的全域性變數,其他原始檔引用不會發生變化。

2.每個原始檔都會儲存乙份副本,如果全域性變數定義比較多,大工程中,多次引用,就會造成副本占用空間,浪費資源。

定義全域性變數可以使用下面的方式:

#pragma once

static int globle= 0;

static int image =

[...............

...............//省略

];

引用時,加入extern,但是不能賦值,如下

extern int global;

void main()

能否在標頭檔案中定義全域性static變數?

能否在標頭檔案中定義全域性static變數?一 在沒有類定義的標頭檔案中定義全域性static變數g static。用gcc和g 都可以編譯。但執行結果顯示,在test.c和main.c中,變數的值相同,但位址不同,說明是兩個變數。frank userver project test static ...

標頭檔案裡不要有全域性定義

由於乙個標頭檔案可能會被多次包含,所以有全域性定義的情況下,在鏈結會出現重定義錯誤 全域性定義不應該放在標頭檔案裡,應該放入其相應的實現檔案中。如果乙個標頭檔案裡的全域性定義被多個cpp檔案所使用,則只有乙個檔案可以include這個標頭檔案,其他只能是extern這些全域性宣告。如何乙個標頭檔案要...

勿在標頭檔案中定義static變數

看到有一位同學在標頭檔案中這麼寫 static const wchar t g str1 static const wchar t g str2 這種定義變數的方式我從來沒有見過,而且它還能順利通過編譯,於是我很想知道編譯器是如何處理這種變數定義的。定義全域性變數時使用static,意味著該變數的作...