我在学一些关于C++的框架的时候,因为尝尝会被复杂的对象关系搞的晕头转向,在IDE 中跟到源 / 头文件又看到一大堆的宏,还有各种typedef 一跟就是好几个文件,有没有在工作的或者资深 C++大姥,解释一下, 复杂的对象关系,只会用,但是搞不清楚就浑身难受 ,怎么办 ?
跟你唠唠嗑。楼上说的条件编译啊,宏啊,本质都是为了让代码编译的时候,尽量不要去编译没用的代码。这些“没用”的代码,可能包括不同平台和系统的特殊代码,也可能是一些当前用不到的业务功能。而 typedef 定义非常多层级的类型,是为了让各个层级之间的类型能够解藕,当以后你需要改其中的某些类型的时候,不需要到处进行“霰弹式”修改,而只用改少数的几个地方,这也是高抽象的好处。
古早的时候,由于c语言的地位,宏编程比较普遍。事实上,从c++11标准开始,到c++14、17、20和23,模板元编程逐渐也开始取代一部分宏的地位了,因为模板元编程在 debug 的时候会比单纯的宏编程更有优势。
之所以现在还是宏编程满天飞,一部分原因来自于业务上的向前兼容的需求(比如有些上古业务还要c98兼容),另一部分来源于模板元编程对编码人员的水平要求更高,综合这些因素,宏编程事实上是无可替代的手段了。
https://blog.csdn.net/hanchaoman/article/details/8809951
1,条件编译:方便程序在运行过程或调试过程中,执行一些在程序发布后并不需要执行的指令。
2,宏函数:宏函数的优点是避免了函数调用,提高程序效率。