Register__ 2022-08-19 22:04 采纳率: 89.5%
浏览 74
已结题

C++的各种库为什么要使用这么多的宏

我在学一些关于C++的框架的时候,因为尝尝会被复杂的对象关系搞的晕头转向,在IDE 中跟到源 / 头文件又看到一大堆的宏,还有各种typedef 一跟就是好几个文件,有没有在工作的或者资深 C++大姥,解释一下, 复杂的对象关系,只会用,但是搞不清楚就浑身难受 ,怎么办 ?

img

img

  • 写回答

3条回答 默认 最新

  • 林地宁宁 2022-08-20 00:52
    关注

    跟你唠唠嗑。楼上说的条件编译啊,宏啊,本质都是为了让代码编译的时候,尽量不要去编译没用的代码。这些“没用”的代码,可能包括不同平台和系统的特殊代码,也可能是一些当前用不到的业务功能。而 typedef 定义非常多层级的类型,是为了让各个层级之间的类型能够解藕,当以后你需要改其中的某些类型的时候,不需要到处进行“霰弹式”修改,而只用改少数的几个地方,这也是高抽象的好处。

    古早的时候,由于c语言的地位,宏编程比较普遍。事实上,从c++11标准开始,到c++14、17、20和23,模板元编程逐渐也开始取代一部分宏的地位了,因为模板元编程在 debug 的时候会比单纯的宏编程更有优势。

    之所以现在还是宏编程满天飞,一部分原因来自于业务上的向前兼容的需求(比如有些上古业务还要c98兼容),另一部分来源于模板元编程对编码人员的水平要求更高,综合这些因素,宏编程事实上是无可替代的手段了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 赞助了问题酬金6元 8月19日
  • 创建了问题 8月19日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来