我在学一些关于C++的框架的时候,因为尝尝会被复杂的对象关系搞的晕头转向,在IDE 中跟到源 / 头文件又看到一大堆的宏,还有各种typedef 一跟就是好几个文件,有没有在工作的或者资深 C++大姥,解释一下, 复杂的对象关系,只会用,但是搞不清楚就浑身难受 ,怎么办 ?
3条回答 默认 最新
- 林地宁宁 2022-08-20 00:52关注
跟你唠唠嗑。楼上说的条件编译啊,宏啊,本质都是为了让代码编译的时候,尽量不要去编译没用的代码。这些“没用”的代码,可能包括不同平台和系统的特殊代码,也可能是一些当前用不到的业务功能。而 typedef 定义非常多层级的类型,是为了让各个层级之间的类型能够解藕,当以后你需要改其中的某些类型的时候,不需要到处进行“霰弹式”修改,而只用改少数的几个地方,这也是高抽象的好处。
古早的时候,由于c语言的地位,宏编程比较普遍。事实上,从c++11标准开始,到c++14、17、20和23,模板元编程逐渐也开始取代一部分宏的地位了,因为模板元编程在 debug 的时候会比单纯的宏编程更有优势。
之所以现在还是宏编程满天飞,一部分原因来自于业务上的向前兼容的需求(比如有些上古业务还要c98兼容),另一部分来源于模板元编程对编码人员的水平要求更高,综合这些因素,宏编程事实上是无可替代的手段了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
- ¥15 stata安慰剂检验作图但是真实值不出现在图上
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来