全域性變數不能放在標頭檔案其中

2021-09-07 04:25:43 字數 462 閱讀 1026

看網上各種說法說 變數的宣告和變數的定義,可是還是沒有講清楚什麼是宣告什麼是定義,假設說定義要分配記憶體。宣告不分配。

這個誰都知道。

剛我在vs2012中測試。

按理說 int i。  僅僅是宣告吧

可是我在乙個標頭檔案其中宣告 int i;

然後兩個cpp檔案都呼叫這個.c檔案,出現了重定義錯誤。

我改為 int i = 8;

執行也是報錯誤,重定義;

人們說,在標頭檔案其中僅僅能宣告。不能定義變數。實在搞不懂這句話是什麼意思,

反正在標頭檔案其中放置全域性變數不是好的習慣,以後在標頭檔案其中避免放置全域性變數就好!

由於總歸來說在標頭檔案放置全域性變數會引發一些問題。

比方 我在main函式裡面

int i; i我不顯示賦值。我檢視記憶體這個時候i是乙個亂碼,說明已經有記憶體了。

是不是說這個 int i 已經是定義了?那什麼是宣告?

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

首先,這是一篇科普文,所以 比較雜,我盡量寫清楚一些。1 ansi c標準是什麼?gnu又是什麼?ld是什麼?ansi c是c語言的標準規範,是國際標準化組織制定的國際標準。雖然 ansi c規範了c語言的實現,但是在實際情況中,各家c語言提供商都會根據平台的不同情況對ansi c進行一定的擴充套件...

全域性變數在標頭檔案中「定義」

看著標題,定義上面加了乙個引號,這個得注意了。怎麼解釋呢,一般而言,變數只能定義在.c檔案中,宣告變數才在.h檔案中。下面就打破常規,把定義變數的語句放在.h檔案中,但是對實際而言,變數定義在標頭檔案中是表面上的。下面直接給出 有三個檔案a.h a.c main.c a.h裡面的 csharp vi...

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

cocos3.13前的版本中,一些全域性變數使用static 定義,研究了static定義全域性變數的優缺點。例如定義下面的標頭檔案 pragma once static int globle 0 static int image 省略 在其他原始檔中,引用cocos.h標頭檔案後,每個原始檔都會儲...