日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

const与define相比优点_const与#define的区别、优点

發(fā)布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 const与define相比优点_const与#define的区别、优点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

const與#define的區(qū)別

編譯器處理方式不同

define宏是在預處理階段展開。

補充:預處理器根據以#開頭的命令,修改原始的程序。比如我們常見的#include 命令告訴處理器讀取系統(tǒng)頭文件stdio.h的內容,并把它直接插入程序文本中。咱們的#define也是,僅僅是單純的文本替換。

const常量是編譯運行階段使用。

類型和安全檢查不同

define宏沒有數據類型,不做任何類型檢查,僅僅是展開。

const常量有具體的數據類型,在編譯階段會執(zhí)行類型檢查。

存儲方式不同

define宏僅僅是展開,有多少地方使用,就展開多少次,不會分配內存。

const常量會在內存中分配(可以是堆中也可以是棧中)。

const ?可以節(jié)省空間,避免不必要的內存分配。

例如:

#define PI 3.14159 //常量宏

const doulbe Pi=3.14159; //此時并未將Pi放入ROM中

double i=Pi; //此時為Pi分配內存,以后不再分配!

double I=PI; //編譯期間進行宏替換,分配內存

double j=Pi; //沒有內存分配

double J=PI; //再進行宏替換,又一次分配內存!

const定義常量從匯編的角度來看,只是給出了對應的內存地址,而不是象#define一樣給出的是立即數,所以,const定義的常量在程序運行過程中只有一份拷貝,而?#define定義的常量在內存中有若干個拷貝。

代碼調試不同

const常量可以進行調試的。

define是不能進行調試的,因為在預編譯階段就已經替換掉了。

const優(yōu)點

const常量有數據類型,而宏常量沒有數據類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產生意料不到的錯誤。

有些集成化的調試工具可以對const常量進行調試,但是不能對宏常量進行調試。

const可節(jié)省空間,避免不必要的內存分配,提高效率。

#define的優(yōu)點

宏可以定義一些函數,const不可以

宏可以使代更碼簡潔

使用宏可以方便代碼維護

宏還可以定義帶參數的宏,做到一定程度的泛型(利用#或者##操作符)

?

總結

以上是生活随笔為你收集整理的const与define相比优点_const与#define的区别、优点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。