static, extern, const總結

概要

  • static:靜態(tài)、局部。
  • extern:外部
  • const:常量
static

表示一個變量只在定義此變量的編譯單元(如每個類的實現(xiàn)文件或者每個函數(shù)內(nèi)),生命周期與代碼的生命周期一樣,如一個app結束運行,static定義的變量才會結束。

const

常量
NSString *const timeRun = @“VALUE”;表示timeRun指針不變

extern
extern NSString *const timeRun;

若編譯器看到頭文件中extern關鍵字,就能明白如何在引入此頭文件的代碼中處理該常量了。這個關鍵字告訴編譯器,在全局符號表中會有一個名叫timeRun的符號。也就是說,編譯器無須查看其定義,即允許代碼使用此常量。因為它知道,當鏈接成二進制文件后,肯定能找到這個常量。
注意:如果在多個文件中同時出現(xiàn)extern定義的同名的變量,編譯器會報錯duplicate symbol XXX in:

static const與#define區(qū)別

定義常量時,盡量使用static const代替#define,因為:

  • 使用#define時,預處理指令定義常量不含類型信息,編譯器只是會在編譯前據(jù)此執(zhí)行查找和替換操作。
  • 使用#define時,即使有人重新定義了常量值,編譯器也不會產(chǎn)生警告信息,這將導致應用程序中的常量值不一樣。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容