1. 宏定义
宏定义可以简单理解为文本替换,它在编译器预处理阶段将 要替换的文本 粘贴到宏的位置。
2. 枚举
枚举是一种数据类型(枚举变量中的成员类型是整型),它允许我们将一组相关的常量值定义在一起。
3. 宏定义和枚举的区别
宏定义使用于需要在多个地方使用相同的常量值的情况,例如不同的 .c文件 中(因为宏定义的作用范围是当前宏所在的 .c 文件),或者是定义一些特定的配置选项(作为宏开关)、状态码(例如用数字表示状态,结合宏替换来增加程序可读性)和字符串常量(例如文件名、文件的完整路径名)。
枚举提供了一种相对于宏定义更安全、更固定的选项,使用枚举可以简化代码,并且使代码的意图更加明确,枚举的作用范围就是定义的枚举变量的作用范围。例如STM32的标准库中就有大量地用到枚举。
4. 小结
以下适用场合只是相对而言,宏定义和枚举还有很多的作用未列出。
宏定义的适用场合:定义简单的常量、进行全局替换(例如改变多个 .c 文件 的宏)。
枚举的适用场合:定义一组相关的选项,相较于宏定义,它需要定义更多的常量。