c++ - 枚举和定义语句之间的区别

标签 c++ c enums c-preprocessor

在 C/C++ 中使用 Define 语句和 enum 语句有什么区别(以及在 C 或 C++ 中使用它们时有什么区别)吗?

例如,什么时候应该使用

enum {BUFFER = 1234}; 

超过

#define BUFFER 1234   

最佳答案

enum 定义语法元素。

#define 是一个预预处理器指令,在编译器看到代码之前执行,因此不是 C 本身的语言元素。

通常首选枚举,因为它们是类型安全的并且更容易发现。定义更难定位并且可能具有复杂的行为,例如一段代码可以重新定义另一段代码创建的#define。这可能很难追踪。

关于c++ - 枚举和定义语句之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035575/

相关文章:

c++ - 使用 QtConcurrent::run 在单独的线程上连接信号/插槽

c++ - 对 std::list 进行排序时,运算符 < 无效

c - C 中的 Alarm() 和 SIGALRM 问题

Swift switch 语句考虑了 Int 的所有情况,但编译器仍然显示错误

c - 如何检查数据类型是否达到最大容量?

java - 从扩展类(class)调用

c++ - vector.push_back 右值和复制省略

c++: vector<string> 的迭代

c - malloc(strlen(char*)+1) 遇到的问题

c - dev c++ 和指向字符串的指针,程序挂起