糾結的const(static) 和 define

2021-07-28 19:46:56 字數 995 閱讀 3402

const(static) 和 define 在開發中常用來定義常量,這樣做的好處是:使**更易維護、提高**的效率。

1、const(static)

const是c/c++中的乙個關鍵字(修飾符),const一般用來定義乙個常量,既然叫做常量,即以後再也不能修改其值。

const 定義常量時,編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率比巨集定義要高。從彙編的角度來看,只是給出了對應的記憶體位址,所以,const定義的常量在程式執行過程中只有乙份拷貝。

const 定義常量時,通常是同時定義常量的型別、值,且常與 static 結合使用。

如:[objc]view plain

copy

static

cgfloat 

const

kscale = 0.8

;  static

nsstring

*const

identifiercell = 

@"listcell"

;  

2、define

define, 巨集定義, 則是一條預編譯指令, 編譯器在編譯階段會將所有使用到巨集的地方簡單地進行替換。

define 定義常量時,在記憶體中有若干個拷貝。

define 定義常量時,只是定義了常量的值,但未做型別設定。

define 除了定義常量外,還能進行高階巨集定義功能

如:定義函式;定義oc中常用的單例模式;還能根據傳引數生成字串。

[objc]view plain

copy

/// 定義常量

#define userid @"123456"

/// 開啟瀏覽器

個人建議在確定了使用的常量型別,及常量值時使用 const 進行定義;而簡單的函式,或傳參字串等高階定義時,則使用 define 進行巨集定義。

const static和extern關鍵字

一 巨集定義 概念 巨集定義實質是乙個預編譯指令,在程式未執行之前將某些指令付給相應的變數。一般情況預處理指令都是以 號開頭的,所以巨集定義也是以 開發,關鍵字為 define 定義巨集定義 undef 結束巨集定義 定義格式及作用域 一般巨集定義都定義在程式的首段 define 巨集名 值。巨集定...

糾結的難題

不知道各位在使用oracle時,有木有遇上這麼個情況 相同的資料庫連線,使用者密碼均相同的情況下 在別人機器上,查詢所有的表或者檢視都是有資料的。而在你自己的機器上,並不能查詢到所有的表或檢視均有資料。尤其是那些你需要用到的檢視,那個莫名的火呀!o o 解決方案如下 通過regedit 修改登錄檔 ...

糾結的內心

糾結的內心 現在天就要亮了,我還沒有睡意,現在心裡面非常平靜。2012 年10 月5 號下午吃晚飯的時候,路邊有人給了我一本廣告紙,是關於女性健康的,一共三四十頁,我想大家也都收到過,閒來無事我就翻起來看,也算是為我未來的老婆。沒想到竟然幫了我的大忙。怎麼說呢,我把這本書從頭到尾翻了一遍。在這期間,...