在乙個c 源程式檔案中,怎麼區別static和extern的用法?

時間 2021-05-11 14:11:51

1樓:lgxZJ

在c語言中,static宣告的東西的符號不會在鏈結時對其他單元(即原始檔)可見,所以在其他單元裡用不了。

extern表明這個東西在其他單元裡定義了,僅僅是告訴編譯器在處理包含這個extern後面的東西時候跳過符號檢查,但如果你在其他單元裡沒有定義這個東西的話,最後鏈結是會出問題的。好像不帶static關鍵字的,預設都是extern的

2樓:王晉瑋

這裡有兩個概念:storage duration和linkagestatic和extern關鍵字會對變數的storage duration和linkage產生影響。具體可參考:

3樓:香草天堂

這是關鍵字的」過載」,根據上下文來解釋其意義,設計者們最大程度減少關鍵字數量而做的工作。不然又得多不少關鍵字!

具體到你的問題。這裡的static意義旨在說明該變數的鏈結性(內部鏈結),全域性變數已然處於靜態區,從而不會造成理解上的混亂,這樣設計沒問題,也有不錯效果。不過當它用在自動變數上,就旨在說明其儲存特性(靜態儲存),因為區域性變數沒有鏈結性嘛!

再來理解下static修飾函式了?我想就不用我說了吧、

4樓:

全域性變數和static全域性變數都儲存在靜態儲存區,這兩種全域性變數的區別如下:

1. int a:這裡的a對所有原始檔可用,其他原始檔可以不include直接通過extern對a進行引用,此時所有的a都是同乙個。

2.static int a:這裡加了static之後,a的作用域就被限制在了本原始檔,如果其他原始檔要使用,可以通過include進行拷貝,但是此時的a就是多個不一樣的。

c 能否把所有要用的標頭檔案在某乙個標頭檔案中全inlcude了,然後其他檔案只用include這個

qugx0528 每個cpp都是乙個編譯單元,編譯時生成多個obj檔案,在link的時候,也會極大的拖慢速度。有這麼一種情況,我有乙個很大的UI介面,其對應的實現 操作類也很龐大,我想把他們分解到多個cpp實現中。這樣就產生了這麼乙個問題 代表ui的標頭檔案會在每個cpp中被include一次,這樣...

怎麼樣寫乙個C 程式,刪除一維陣列中的重複資料,使陣列中的資料各不相同?

張強 排序,氣泡排序會寫吧?稍微改一改就可以寫乙個去重程式了 語言描述一下,程式你自己寫了 先設定skip 0 當i位置時,從i skip 1 n中選最大 小的,如果i 0並且這個資料和i 1的資料相等,就是重複了,skip 下一輪i不增加,直接從i skip 1 n中選最大 小的,迴圈 如果沒有重...

在愛情中疼愛和愛有什麼區別?哪乙個更深?

疼愛,有心疼 寶貝 不忍心的成分,靠近親情和慈悲心,包容 體貼的角度更多一些。愛就比較寬泛,愛中有疼愛的部分,但更多是陪伴 欣賞 吸引 共同成長等互動的角度更多一些。疼愛中不平等的部分多一些,愛中平等的部分多。但更多時候,愛中自帶疼愛。就好像是物品和影子的關係。哈哈哈,我的理解是這樣子。 想飛的屌絲...