当前位置:首页 > 黑客服务 > 正文内容

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

访客4年前 (2021-08-13)黑客服务485

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://therlest.com/104185.html

分享给朋友:

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

贾秀东个人资料简介(简历及图片)

贾秀东人物概况 本页面提供了贾秀东个人资料简介(简历及图片),贾秀东是谁?贾秀东个人简介资料完整设计了网页求职找工作编辑个人简历作品所需要的贾秀东网站常用模板元素,不保证贾秀东人物数据真实,任何问题请联系管理员调整。 贾秀东图片 贾秀东个人资料简介 贾秀东,中国国际问题研究所特聘研究员。1...

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另 鸡鸭的肛门附近组织,布满大大小小的腺体,各类秽物与毒素都在这些腺体囤积;鸡鸭的肛门也有非常高密度的大肠杆菌,所以鸡鸭的屁股不是少吃的问题,而是不能吃.吃得少可能没觉出怎样,多了问题就显出来了.而且鸡鸭屁股的大肠杆菌会随着蛋生出来的时...

身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)

一、身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)方法总结 1、黑客通过手身份姓名能否窃取别人银行卡里。朋友你好,这个问题不是这样理解的的,黑客是通过你的这些信息,破易你的银行卡号支付密码来盗取你的财物的,一般你只要不乱点链接,不轻易在手机。黑客控制了手机,窃取了身份证号码手机号姓名等所有...

古文化常识(中国古代文化常识大全)

1.中国古代文化常识 文学常识? 四本书:《论语》、《中庸》、《孟子大学》 五经:《诗经》《礼记》《周易》《春秋》 乐府双壁:木兰诗孔雀东南飞 三个字:警告世界,说真话,说真话,唤醒世界,说同样的话 第二枪:第一枪很厉害,第二枪也很厉害 三官:石渠官、潼关官、新安官 三次告别:新婚、老...

青岛新闻网房产 - 青岛个人房源出售

估计那个时候,0以上的住房为普通住宅。来说几句. 3500左右,我建议你来沧口找房子吧,青岛房产网51青岛信息港-房产,市北区的现在也到了新闻网7000了。提供覆盖青岛的别墅、一小时车程的房子大约在虎山以外,台南路。 还有的别墅个人150一般的房子都要,我就在黄岛住,早下手吧!沿海一带,2手放一般都...

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好 铁盖子可以放入高压锅蒸吗? 装酱料的铁盖子,外面的涂层有些剥落,好象也没锈,可以拿它盖严瓶子入高压锅蒸吗? 绝对不行!既危险又不卫生。盖住的瓶子在高压锅中加热,很容易形成压力差而爆炸;铁在高压锅中的水蒸汽作用下极易变成四氧化三...

评论列表

惑心淤浪
3年前 (2022-07-06)

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

俗野抹忆
3年前 (2022-07-06)

typedef和define的区别是:define是预处理编辑器,可以定义宏被替换的可能性,typedef由编辑器处理,遵循作用域规则,可以作为定义类型别名#define是一个c指令,也是定义各种类似typedef的数据类型的别名。但

发表评论

访客

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