C語言可以在不同的原始檔中定義相同名字的全域性變數嗎

2021-07-08 21:57:21 字數 1165 閱讀 4244

1樓:山東路雲

拿vc試啊,剛花了幾分鐘實測了下,不加static,不管是否初始化,都是在連結的時候報重定義錯誤,如果加了static, 不管是否初始化,編譯連結都沒問題,只是不同的原始檔佔用不同的記憶體,也就是說已經是兩個不同的static全域性變數了。

2樓:

可以,因這個不是語法錯誤,一般是邏輯錯誤!而這種錯誤是看程式設計人員要怎麼使用變數的!

3樓:周生

全域性變數

既然是全域性的,你定義兩個怎麼辦?

4樓:空雪夢見

編譯會通過

連結會失敗

5樓:

不使用static的時候,兩個不同的原始檔都可以正常編譯,但會出現連結錯誤,原因是有兩個地方存在相同的變數,導致編譯器無法識別應該使用哪一個。

另外,而使用static的時候,你所定義的static變數如果是區域性的話,編譯的時候編譯器會將其重新命名,其他檔案就不會使用到這個檔案的static變數了,這樣就使得只在本檔案內有效;如果是全域性的話,就全域性可見,共享同一塊記憶體空間。

具體細節請參考《c++反彙編與逆向分析》(錢林松),裡面講的很詳細。

如有疑問可以追加問題,歡迎採納,謝謝!

6樓:

可以啊!直接新增變數即可。

7樓:春秋幾許隨緣化

區域性的static變數(函式內部的)只是函式內部可見,全域性的static變數(函式外面的)應該是隻有當前原始檔可見

c語言問題 區域性變數能不能和全域性變數重名?

8樓:花落へべ若相惜

可以,只不過區域性變數可以覆蓋全域性的,就是在區域性變數的範圍內全域性變數不起作用

9樓:與子如初見

能,區域性會抄遮蔽全域性

。要用襲全域性變數,需要使用 "::" ;

區域性變數bai

可以與全域性變數同名du

,在函zhi數內引用這個變數時,會用到dao同名的區域性變數,而不會用到全域性變數。對於有些

編譯器而言,在同一個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義一個同名的區域性變數,而那

個區域性變數的作用域就在那個迴圈體內。

c原始檔不同字尾cccppccp的區別

參考了c primer plus第五版中文版 p8c 實現 源 的副檔名 unix c cc cxx c gnuc c cc cxx cpp c borland c cpp microsoft visual c cpp cxx cc 我們常用的vc2008上是cpp檔案,c也可以,其他倆我不太熟悉,...

C語言中的標頭檔案,原始檔到底是什麼東西

其實就是儲存你所寫的語句的地方,你寫完語句後需要用乙個軟體來開啟它,執行它.而這個軟體所能識別的檔案,就稱為該軟體的原始檔.如c語言常用的執行軟體 turbo c 能識別的檔案是以 c 為字尾名的檔案,所以你在寫完c語句後儲存的時候,就要儲存成 c 檔名 點c 以便turbo c能順利的開啟.c語言...

C的 cs檔案中怎麼引用 aspx檔案中定義的css或者 cs檔案中怎麼自己寶義css

首先,css檔案定義一般都是web前端處理,很少會涉及到後台cs檔案 aspx檔案中定義的css,可以放到單獨的css檔案中 至於你說的cs檔案處理css的,有種情況,也是後台cs檔案中定義css內容 字串,然後通過response.write 之類的方式,直接把流輸出到客戶端html頁面,上面說的...