#define typedef 区别
生活随笔
收集整理的這篇文章主要介紹了
#define typedef 区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1) #define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程序時才會發現可能的錯誤并報錯。例如:
#define PI 3.1415926
程序中的:area=PI*r*r 會替換為3.1415926*r*r
如果你把#define語句中的數字9 寫成字母g 預處理也照樣帶入。2)typedef是在編譯時處理的。它在自己的作用域內給一個已經存在的類型一個別名,但是You cannot use the typedef specifier inside a function definition。3)typedef int * int_ptr;
與
#define int_ptr int *
作用都是用int_ptr代表 int * ,但是二者不同,正如前面所說 ,#define在預處理 時進行簡單的替換,而typedef不是簡單替換 ,而是采用如同定義變量的方法那樣來聲明一種類型。也就是說;//refer to (xzgyb(老達摩))
#define int_ptr int *
int_ptr a, b; //相當于int * a, b; 只是簡單的宏替換typedef int* int_ptr;
int_ptr a, b; //a, b 都為指向int的指針,typedef為int* 引入了一個新的助記符這也說明了為什么下面觀點成立
//QunKangLi(維護成本與程序員的創造力的平方成正比)
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所指的對象。3)也許您已經注意到#define 不是語句 不要在行末加分號,否則 會連分號一塊置換。
轉載于:https://www.cnblogs.com/qbmiller/p/3611369.html
總結
以上是生活随笔為你收集整理的#define typedef 区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速替换图片的组合-AE-样片!
- 下一篇: 点云数据格式说明