【发布时间】:2010-06-28 17:42:05
【问题描述】:
【问题讨论】:
-
回答为“更喜欢
#define”的问题数量少得惊人。 -
@Stephen:主要是因为很多发帖者都被锁定在C++模式,而问题是关于C的。C和C++在这方面的区别是相当大的。事实上,在 C 中大多数情况下你应该更喜欢
#define,但在这种特定情况下(状态机)enum确实是更好的方法。 -
据我记忆,重复的东西。也许规范“状态机中的状态”,改变了一点,但没有理由认为“状态机的状态”是不同的#define 或 enums 可用于什么的应用程序...
-
@AndreyT :同意 C++ 进一步减少了对
#define的需求,但由于 C90const已成为公认的关键字......杀死了 99% 的使用。这种情况(正如你提到的)最好使用enum。使用预处理器符号会使调试变得更加困难。显然,macros_require#define。所以,除了在某些情况下可能比编译器更聪明地连接符号之外,您对 c 中的#define常量(自 C90 起)有什么好处? (我应该补充一点,也许是为了证明你的观点,我在 C++ 中工作) -
@Stephen: C 中的
const对此毫无用处。这实际上就是我所说的差异。在 C 中const不会产生 constant,但在 C++ 中会。在 C 中const创建一个“const 对象”,它不是常量,不能在需要常量的地方使用。这就是为什么在 C 中你的选择仅限于#define和enum。
标签: c