const 與 #define的區別
在c++程式中,它還可以修飾函式的定義體,定義類中某個成員函式為恆態函式,即不改變類中的資料成員
1)const 有資料型別,而巨集沒有資料型別,編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,
沒有型別安全檢查,並且在字元替換中可能會產生意料不到的錯誤(邊際效應)
2)有些整合化的除錯工具可以對const常量進行除錯,但是不能對巨集常量進行除錯。
在c++程式中只使用const常量而不使用巨集常量
“儘量用編譯器而不用預處理”,因為#define經常被認為好象不是語言本身的一部分
#define TEMP 20
編譯器會永遠也看不到 TEMP 這個符號名,因為在原始碼進入編譯器之前,它會被預處理程式去掉,於是 TEMP 不會加入到符號列表中。
3)const與#define最大的差別在於:前者在堆疊分配了空間,而後者只是把具體數值直接傳遞到目標變數罷了
const常量存在於程式的資料段,#define常量存在於程式的程式碼段。
相關推薦
預處理、const、static與sizeof-使用const與#define的特點及區別
特點 周期 sizeof 傳遞 const常量 fin 參數 編譯器 run 1:#define只是用來做文本替換的。例如: #define PI 3.1415926 float angle; angle=30*PI/180; 那麽,程序進行編譯的時候,編譯器會
php中const與define的使用區別
常量是一個簡單值的識別符號(名字)。如同其名稱所暗示的,在指令碼執行期間該值不能改變(除了所謂的魔術常量,它們其實不是常量)。常量預設為大小寫敏感。通常常量識別符號總是大寫的。 可以用 define() 函式來定義常量。在 PHP 5.3.0 以後,可
(54)const與define的特點和區別
(1)#define只是用來做文字替換的,#define 常量是一個Compile-Time概念,它的生命週期止於編譯器,它存在於程式的程式碼段,在實際程式中它只是一個常數、一個命令中的引數,並沒有實際存在。 (2) const常量存在於程式的資料段,並在堆疊分配了控制
const與#define巨集定義的區別——C語言深度剖析
const定義的只讀變數在程式執行過程中只有一份拷貝(因為它是全域性的只讀變數,存放在靜態區),而#define定義的巨集常量在記憶體中有若干個拷貝。 #define巨集是在預編譯階段進行替換,而const修飾的只讀變數是在編譯的時候確定其值。 #define巨集沒有型別
const 與 #define的區別
在c程式中,const的用法主要有定義常量、修飾函式引數、修飾函式返回值等3個用處;在c++程式中,它還可以修飾函式的定義體,定義類中某個成員函式為恆態函式,即不改變類中的資料成員 1)const 有資料型別,而巨集沒有資料型別,編譯器可以對前者進行型別安全檢查,而對後者
PHP const 與 define的區別
1、const用於類成員變數定義,一旦定義且不能改變其值。define定義全域性常量,在任何地方都可以訪問。 2、define不能在類中定義而const可以。 3、const不能在條件語句中定義常量 if (...) { const FOO = 'BAR';
const 與#define 的比較
char etc 錯誤 esp ogr amp sin define nbsp const 與#define 的比較 C++ 語言可以用 const 來定義常量,也可以用 #define 來定義常量。但是前者比後 者有更多的優點: (1) const 常量有數據類型,而宏常
const和#define區別
define巨集是在預處理階段展開。const常量是編譯、執行階段使用 巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查 所有的巨集替換隻是簡單的字串替換,注意是字串替換,所以並不會檢查其合法性,而const定義的常量依然是內建型別等,所以會對其進行型別安全檢
const與define的相同與不同
const與define的相同之處:定以後的變數是不允許在後續的程式程式碼中修改的,定義變數代替所定義的變數或數值 const與define的不同之處:const是有作用域的,但是define是全域性的 #include "iostream" using namespace std; /
const與#define相比,優點?
首先是#define的優點: 巨集不僅可以用來代替常數值,還可以用來代替表示式,甚至是程式碼段。用巨集來代表常數,好處是:)1. 讓程式碼更簡潔明瞭 )2. 方便程式碼的維護 對巨集的處理,在編譯過程中稱為“預處理”。也就是說在正式編譯前,編譯器必須先將
const 與readonly區別
const與readonly 很像,都是將變數宣告為只讀,且在變數初始化後就不可改寫。那麼,const與readonly 這兩個修飾符到底區別在什麼地方呢?其實,這個牽扯出C#語言中兩種不同的常量型別:靜態常量(compile-time constants)和動態常量(r
const 和 #define區別
(1) 編譯器處理方式不同 define巨集是在預處理階段展開。 const常量是編譯執行階段使用。 (2) 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。 const常量有具體的型別,在編譯階段會執行型別檢查。 (
const 與 #define的比較
C++ 語言可以用const來定義常量,也可以用 #define來定義常量。但是前者比後者有更多的優點: (1) const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元
iOS中const與static區別和聯絡
const就是隻讀的意思,只在宣告中使用; static一般有2個作用,規定作用域和儲存方式.對於區域性變數,static規定其為靜態儲存方式,每次呼叫的初始值為上一次呼叫的值,呼叫結束後儲存空間不釋放; 對於全域性變數,如果以檔案劃分作用域的話,此變數只在當前檔案可見;對
const的用法 & 與define 的區別
關鍵字const是用來定義常變數的,一個變數如果被const修飾那麼他的值就不能被改變 還有#define,#define是在預編譯的時候進行處理的 先講講#define的用法 #include <stdio.h> #define CALC(x) x*x
const 常量與 define常量的區別
應該 自己 常量 con 而且 fin 表達 進行 替換 c++中的常量可以使用const定義,也可以使用#define宏定義的方式;二者區別如下: - **區別** 1. const定義的常量有自己的數據類型,編譯器可以對其進行嚴格的類型檢查;但是define定義的宏常
C++編程中const和#define的區別
程序 存在 pan best color 普通 分配 一次 def (1) 編譯器處理方式不同 define宏是在預處理階段展開。 const常量是編譯運行階段使用。(2) 類型和安全檢查不同 define宏沒有類型,不做任何類型檢查,僅僅是展開。 const常量有
C語言const和define的區別
一份 安全 font 預處理 tro span ble 展開 區別 const 定義的是變量不是常量,只是這個變量的值不允許改變是常變量!帶有類型。編譯運行的時候起作用存在類型檢查。 define 定義的是不帶類型的常數,只進行簡單的字符替換。在預編譯的時候起作用,不存在類
內聯函數與#define的區別
用處 fine 使用 del inline 修飾 安全 很多 編譯 內聯函數從源代碼層看,有函數的結構,而在編譯後,卻不具備函數的性質。內聯函數不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處。編譯時,類似宏替換,使用函數體替換調用處的函數名。一般在代碼
typdef與define的區別
轉自某網友,之前不懂事沒有留下原連結。 #define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。例如: #define PI 3.1415926 程式中的:area=PIrr 會替換