巨集定義 define 和常量 const 的區別

2021-09-16 12:57:03 字數 423 閱讀 8855

型別和安全檢查不同

巨集定義是字元替換,沒有資料型別的區別,同時這種替換沒有型別安全檢查,可能產生邊際效應等錯誤;

const常量是常量的宣告,有型別區別,需要在編譯階段進行型別檢查

編譯器處理不同

巨集定義是乙個"編譯時"概念,在預處理階段展開,不能對巨集定義進行除錯,生命週期結束與編譯時期;

const常量是乙個"執行時"概念,在程式執行使用,類似於乙個唯讀行資料

儲存方式不同

巨集定義是直接替換,不會分配記憶體,儲存與程式的**段中;

const常量需要進行記憶體分配,儲存與程式的資料段中

定義域不同

void f1 ()

void f2 ()

是否可以做函式引數

巨集定義不能作為引數傳遞給函式

const常量可以在函式的引數列表**現

define巨集定義和const常量定義之間的區別

define部分 巨集不僅可以用來代替常數值,還可以用來代替表示式,甚至是 段。巨集的功能很強大,但也容易出錯,所以其利弊大小頗有爭議。巨集的語法為 define 巨集名稱 巨集值 注意,巨集定義不是c或c 嚴格意義上的語句,所以其行末不用加分號結束。作為一種建議和一種廣大程式設計師共同的習慣,巨集...

define巨集定義和const常量定義之間的區別

用巨集表示常數 假如我們要寫乙個有關圓的種種計算的程式,那麼 3.14159 值會被瀕繁用到。我們顯然沒有理由去改 的值,所以應該將它當成乙個常量對待,那麼,我們是否就不得不一遍一遍地寫3.14159這一長串的數呢?必須有個偷懶的方法,並且要提倡這個偷懶,因為多次寫3.14159,難免哪次就寫錯了。...

define巨集定義和const常量定義之間的區別

define 定義預編譯時處理的巨集 只進行簡單的字元替換,無型別檢測 const 定義程式中的常量,編譯時處理 常量修飾符,把變數定義為常量 typedef 定義型別別名 例 typedef int a 則 a a 定義a為int inline 定義內聯函式。const定義,大部分編譯器將在編譯的...