久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > define和typedef的區別

define和typedef的區別 時間:2018-09-29      來源:未知

 今天在用到typedef時,突然想到define好像也可以實現重定義的功能,就在想那這兩者之間有什么區別,又有什么聯系呢?所以整理出了下面的文檔供大家參考,總結有疑問的地方,可以提出來一塊討論。

1.define:

 #define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程序時才會發現可能的錯誤并報錯。

 通常用它來定義常量(包括無參量與帶參量),以及用來實現那些“表面似和善、背后一長串”的宏,它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,但也因此難以發現潛在的錯誤及其它代碼維護問題

#define定義“可讀”的常量以及一些宏語句的任務

2.typedef:

 typedef是在編譯時處理的。它在自己的作用域內給一個已經存在的類型一個別名,但是You cannot use the typedef specifier inside a function definition。

 typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它并不實際分配內存空間

typedef則常用來定義關鍵字、冗長的類型的別 名

3.區別1:

typedef int * int_ptr;

#define int_ptr int *

 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所說 ,#define在預處理 時進行簡單的替換,而typedef不是簡單替換 ,而是采用如同定義變量的方法那樣來聲明一種類型。也就是說;

#define int_ptr int *

int_ptr a, b; // 相當于int * a, b; 只是簡單的宏替換

typedef int* int_ptr;

 int_ptr a, b; //a, b 都為指向int的指針,typedef為int* 引入了一個新的助記符

4.區別2:

typedef int * pint ;

#define PINT int *

那么:

const pint p ;//p不可更改,但p指向的內容可更改

const PINT p ;//p可更改,但是p指向的內容不可更改。

pint是一種指針類型 const pint p 就是把指針給鎖住了 p不可更改

而const PINT p 是const int * p 鎖的是指針p所指的對象。

上一篇:Web服務器的搭建

下一篇:基于4412的dm9000驅動移植

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部