当前位置:首页 > 网站入侵 > 正文内容

typedef和define区别(条件编译的三种格式)

访客3年前 (2021-08-13)网站入侵718

typedef和define的区别是:define是预处理编辑器,可以定义宏被替换的可能性,typedef由编辑器处理,遵循作用域规则,可以作为定义类型别名

#define是一个c指令,也是定义各种类似typedef的数据类型的别名。但是,两者还是有区别的。接下来我会在文章中详细介绍两者的区别,有一定的参考作用,希望对大家有所帮助

1.预处理器VS编译器

#define由预处理器处理,它将#define值从定义点复制并粘贴到使用点。Typedef由编译器处理,是新类型的实际定义。当控制到达编译器时,所有的#define将被替换。

差异的影响

(1)typedef应以分号结束,而# #define不应以分号结束

(2)在# define中可能有替代的副作用,例如:

typedef char * string _ t; #定义string_d char * string_t s1,S2;// s1和s2都是char *类型 string_d s3,S4;// s3是char *但是s4是char(不是char *)。第二个声明中的问题是预处理器会用

char * s3,S4;这意味着s3属于char *类型,但s4属于char类型。如果希望所有变量都是指针类型,必须指定*

(3)typedef遵循范围规则。也就是说,如果在一个范围内(在一个函数内)定义了一个新类型,那么只有在该范围存在的情况下才会显示新类型的名称。但是,当预处理器遇到#define时,它将替换所有出现的内容(之后没有作用域规则)。例如:

int main (){ { //新范围开始 typedef int Myint _ t; #定义myInt_d int myInt _ t a;//的类型是int myInt _ d b;// b属于int类型 }//新范围结束 myInt _ t c;//错误,找不到输入myInt_t myInt _ d d//d的类型是int }2.宏VS类型别名

#define也可以用来定义宏,但是typedef只能用来为现有类型提供新的名称(它不能创建新的类型)。同样,可以使用# define来定义变量

#define N 10实际上并没有定义N,但是会在整个代码中用10替换N。它可以用来命名常量。Typedef只能为已定义的类型提供新名称

3.typedef用作类型别名

有些类型定义只能由typedef定义,不能由#define定义。示例:

(1)为大小为10的整数数组指定一个新名称

typedef int arr[10];(2)给结构类型起一个新名字

typedef结构{ int a; char b; } myType总结:

扫描二维码推送至手机访问。

版权声明:本文由专业黑客技术知识发布,如需转载请注明出处。

本文链接:https://hkjdpt.com/221931.html

分享给朋友:

“typedef和define区别(条件编译的三种格式)” 的相关文章

刺激战场国际服怎么下载苹果手机(免费分享下载教程)

刺激战场安卓ios国服关服怎么办?本期教程笔者将带来《刺激战场》国际服的下载教程。     安卓端下载方法:      安卓用户不能在主流手游市场下载刺激战场亚服,原因是没有运营,各位可直接使用奇游手游加速器下载刺激战场亚服营安装包,奇游下载地址为http://www.qeeyou.cn/spe...

汽油降价_汽油还能不能降价了

近期北京等地的降价民营油站陆续出现降价潮,可现在加油站还在执行.估计降不了多少。 汽车就火起来了,是市场垄断行为,湖北和山东的中石化、93#油价已降到4点7元左右啦,中石油中石化要等发改委通知,随着越来越多的天然气和其他有助燃行气体,请问下厦门97号汽油多少钱,物价能这么高我看不会掉了.我现在镇江。...

临沂市的公积金能贷款多少 - 公积金多少可以贷款

个月即可进行公积金住房贷款。是公积金账户余额的10-20倍。还有您的年龄。不结婚不可以,公积金贷款额度的计算。 。管理中心咨询电话进行详细咨询,要根据还贷能力、按照现行的规定,算出的最小值就是借款人最高可贷数额。四个条件算出,我想在临沂用公积金贷款买房可是贷款额度。 临沂市住房公积金贷款方面传来好消...

曼联对阵利兹联(8月14日曼彻斯特联队对利兹联队)

妇女节来临之际,对阵曼联利兹联,8月14vs比分打响,英超城市比分和球队恩怨在线直播。4QX8Tf今天给朋友们带一场利兹联和曼联的比赛比赛时间是:2022年2月20日22:00利兹联队两场比赛积23分,排名第15球队主轴连续受伤。 1.曼联对阵利兹联8月14 英超曼联对利兹联马夏尔...

现在千足金多少钱一克_千足金回收多少钱一克最新

DOL,当然你回收进珠宝店后,今天千足金价格多少钱一克?千足金首饰价格多少钱现在,不然人家怎么学习。QE,一下现在千足金的价格在多少钱一克?一般加工费是一克要.肯定是回收啊,还要千万记住买黄金时。 338元,一般的都不收,2015年5月14日。 如果是急需要一克用钱,回收价格是190元左右每克.并以...

诮怎么读(诮怎么读什么意思)

  原标题:微信版《千字文》,全文解读一目了然,经典珍藏版!   《千字文》是中国早期的蒙学课本,涵盖了天文、地理、自然、社会、历史等多方面的知识。其以儒学理论为纲、穿插诸多常识,用四字韵语写出,很适于儿童诵读,后来就成了中国古代教育史上最早、最成功的启蒙教材。《千字文》既是一部流传广泛的童蒙读物...

评论列表

痴者宠臣
3年前 (2022-06-09)

是说,如果在一个范围内(在一个函数内)定义了一个新类型,那么只有在该范围存在的情况下才会显示新类型的名称。但是,当预处理器遇到#define时,它将替换所有出现的内容(之后没有作用域规则)。例如:int main (){

嘻友瘾然
3年前 (2022-06-09)

e由预处理器处理,它将#define值从定义点复制并粘贴到使用点。Typedef由编译器处理,是新类型的实际定义。当控制到达编译器时,所有的#define将被替换。差异的影响(1)t

痴者宠臣
3年前 (2022-06-09)

int arr[10];(2)给结构类型起一个新名字typedef结构{int a;char b;} myType总结:

柔侣原野
3年前 (2022-06-09)

类型)。同样,可以使用# define来定义变量#define N 10实际上并没有定义N,但是会在整个代码中用10替换N。它可以用来命名常量。Typedef只能为已定义的类型提供新名称3.typedef用作类型别名有些类型定义只能由typedef定义,不能由#define定义。示例:(

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。