#define 定义与 typedef

风格不统一 提交于 2020-03-18 18:30:31

#define 

#define宏用于定义预处理的替换规则

简单来说,#define 就是最简单的字符串替换 #define ll long long 就会把程序中所有的 ll 替换成 long long 而程序在运行时根本不会出现过 ll 他把 ll 默认理解为 long long  

在一些c语言考试中可能会出一些 #define b a*5  #define a 2+3 问你输出b的值为多少,不要擅自把a理解为2+3=5,而是把他全都替换掉b=2+3*5=17,到这里,你可能就能理解替换的概念了

代码在正式编译前的预处理阶段,预处理器会根据代码中所有"#define"宏定义进行严格的替换,从该宏定义开始的地方起到文件结束或遇到对应的"#undef"指令为止

如果代码中有跟宏定义相关错误,则会在预处理阶段报错

typedef=type+def

"typedef"操作基于现有数据类型定义一个新的数据类型,原有数据类型依然存在,其会在编译阶段由编译器识别并处理。typedef int INT 这时INT就是一个int型的数据类型

typedef语句=typedef + 变量定义语句

去掉typedef,这个语句定义了一个变量

加上typedef,这个变量是什么类型,那它就变成了这个类型的别名

另外

typedef在定义指针的时候

typedef char *ch;

ch a,b;

你定义了两个char *型的变量是完全没有问题的,但是你要是用#define 的话

#define ch char *

ch a,b;

就相当于是char *a,b; 你b的数据类型变成了char

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!