盡量用static const替代預處理指令

2021-07-10 06:37:40 字數 611 閱讀 6793

變數一定要同時用static和const來宣告,而盡量不要用預處理指令

static修飾符表示該變數僅在定義此變數的編譯單元(實現檔案,也就是.m檔案)中可見。編譯器每收到乙個編譯單元,就會

輸出乙份目標檔案(object file)。如果不加static修飾符,編譯器會建立乙個外部符號(external symbol),那麼如果在其他編

譯單元中宣告了同名變數,編譯器就會報錯:

duplicate symbol _ktest in:

test1.o

test2.o

用static const定義的變數,相當於#define預處理指令一樣,但是會有型別資訊。

相對的extern就是乙個外部宣告,也就是說,在test1檔案裡修飾的變數,要想在test2檔案裡訪問,就需要加上extern修飾。當

編譯器看到extern關鍵字時,就會允許**使用此常量,而不用去檢視他的定義。

一般不要使用預處理指令定義常量,這樣定義出來的常量不含有型別資訊,編譯器只是會在編譯前據此執行查詢與替換操作,即

使有人重新定義了常量值,編譯器也不會產生警告資訊,此會導致常量值不一致。

請盡量用BufferString進行字元拼接

最近寫hql語句時,用到很多字元的鏈結,產生了對string和stringbuffer的思考。string類用來表示那些建立後就不會再改變的字串,它是immutable的。stringbuffer類用來表示內容可變的字串,並提供了修改底層字串的方法。當我們進行字元拼接時,請使用stringbuffe...

為什麼你要盡量用auto

總的來說,使用auto可以幫助你實現正確 高效的變數宣告,讓 更健壯,可維護性更高。由於auto宣告的變數,其型別推導自初始化物,所以他們必須被初始化。int x 可以未初始化 auto x error,必須被初始化 auto x 1 ok,x int這樣就避免了你使用乙個未初始化變數而不小心引出的...

C 基礎2 6盡量用const代替define

2.6盡量用const代替define c define max 1024 c const int max 1024 原因 define定義的巨集從未被編譯器看到過,因為在預處理階段,所有的mac都已經被替換成了1024。如果max不在main裡面,編譯出錯會出現1024,不出現max,不容易解決此...