extern CAACafViewerManager * _ViewerManager = NULL ;
CAACafViewerManager * _ViewerManager = NULL ;
請教個問題,像這種在cpp檔案中定義的全域變數,帶不帶extern有什么區別?
uj5u.com熱心網友回復:
先說答案,你這兩句話是等效的,前一句話會有一個告警C++默認是外鏈接(也就是所有符號都對外可見),而且全域變數都是強符號(不同cpp中只能有一個同名符號),所以如果多個cpp中定義同一個符號是會報鏈接錯誤的
一個cpp中定義的全域變數如何讓另一個cpp使用,就是通過extern宣告來實作的,extern int a;(注意不能賦值,賦值就是定義了,不是宣告了)告訴編譯器a是一個外部符號,本模塊只是用一下,并沒有定義
大概就是這樣吧,如果要徹底搞明白,可以百度下內鏈接外鏈接 強符號弱符號 另外C跟C++也不大一樣
uj5u.com熱心網友回復:
如果其他檔案定義了同名變數 第一個不會報錯 第二個會報錯uj5u.com熱心網友回復:
extern標識是參考別處的;不帶extern是定義。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274205.html
標籤:C++ 語言
下一篇:類名&函式名::
