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

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

访客3年前 (2021-08-13)黑客服务467

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总结:

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

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/104185.html

分享给朋友:

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

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

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

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

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

纳智捷s5多少钱_纳智捷s5怎么样口碑

纳智捷如果销量再上不去可能就会退市了。维护保养不方便。虽然走的是高配低价路线但是油耗高,此情况发生了两次后来到4s店也没给,纳5这款车做工和质量.不仅损伤车子还非常的刺激心脏,你好,到二手市场问问对这款车的评价,内饰做工好一些。 不要急于出手,售后方面是不是真的很差?真诚希望各.发动机动力弱,比纯国...

西安电脑黑客接单_怎么能找入侵蚊香社的黑客

sudo apt install g++-4.4SplashData剖析的这500万被走漏的暗码主要是北美和西欧的用户,成人网站走漏的暗码不包含在剖析陈述中。 支撑(V4增强)所谓0day缝隙的在野运用,一般是进犯活动被捕获时,发现其运用了某些0day缝隙(进犯活动与进犯样本剖析自身也是0day缝隙...

查开放房软件app(免费查开放房的软件)

  你仅仅坚持不懈和女孩儿入睡。假如你发觉仅有大家2个,你应该坚持不懈再开一个。可是你的迟疑说明你還是想和他发生关系。留意防护措施。   线上查询对外开放门户网应用软件,并查询对外开放门户网应用软件系统软件下载   在哪儿申请办理公共性租用住宅?   我与男友在网络上了解的。我北京市找他。他为我开过...

怎样偷偷查他在酒店宾馆的开房登记记录

智能机的出现虽然提高我们的生活质量,但是也存在一些问题。一方面我们可以进行网上购物,聊天等其他休闲活动,另一方面,我们也会担心智能手机内存溢出,所以我们不得不去对手机进行垃圾清除。在清除手机垃圾的同时我们可能会因为一些小的失误,导致微信聊天记录被误删了。那么问题来了:微信聊天记录删除了怎么恢复呢?下...

评论列表

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

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

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

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

发表评论

访客

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