MFC typedef与define

来源:互联网 发布:合信plc编程软件 编辑:程序博客网 时间:2024/05/29 23:45

其中 两者定义的时候的方向是也是相反

typedef int * pint;
#define PINT int *

那么:
const pint p ;//p不可更改,但p指向的内容可更改
const PINT p ;//p可更改,但是p指向的内容不可更改

#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇到的词,全部替代。

#define PINT int*
就是把所有的词 PINT 替换成 int * ,替换完毕再编译。

typedef int* pint; 是语句,由编译器在编译过程中编译处理。
int* x; 和
pint x; 的声明是等价的

typedef int* pint;
long int* x; 声明是可以的,但
long pint x; 不可以。

#define PINT int*
long int* x; 声明是可以的,
long PINT x; 也是可以的。
从上两种情况对比,你就知道两者的区别

long,short,signed,unsigned 叫 “Modifiers”

const,volatile 叫 “Qualifiers"

const pint p; 锁定 pint 类型,锁定初始化后的指针地址。

const PINT p; 预处理为
const int * p;  锁定初始化后的指针指向的值。

原创粉丝点击