宏定义:又叫宏替换,在代码编译的预处理阶段。目的为了增强代码可读性,减少/节省函数调用成本。
条件编译:有选择的编译,在代码编译的预处理阶段。类似开关的作用,用来控制某个模块,某个函数是否可以执行。适用的场景是存在真假的判断条件,查看标识符是否被定义。
在现实的工程项目中会使用大量的条件编译。比如说通过条件编译来使用各个不同的硬件平台;通过条件编译来实现平台和产品线管理;通过条件编译来区分正式版本和调试版本等等。
typedef:
1)typedef 仅限于为数据类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名。
2)宏定义只是简单的字符串替换,由预处理器来处理;而 typedef 是在编译阶段由编译器处理,它并不是简单的字符串替换,而给原有的数据类型起一个新的名字,将它作为一种新的数据类型。