【发布时间】:2016-01-18 20:13:10
【问题描述】:
在使用 C++ 工作一段时间后,我将回到一些 C 开发领域。我已经意识到,在不必要的时候应该避免使用宏,以便让编译器在编译时为你做更多的工作。因此,对于常量值,在 C++ 中我会使用静态 const 变量或 C++11 枚举类来获得良好的作用域。在 C 中,静态常量并不是真正的编译时常量,枚举的行为可能(?或可能不是?)略有不同。
那么,对于常量使用枚举而不是#defines 是否合理?
作为参考,这里有一个excellent list of pros and cons of enums, #defines and static consts in C++。
【问题讨论】:
-
正如你所说,C 和 C++ 在这个话题上存在着深刻的差异。因此,可能没有一个对两种语言都有效的答案。
-
@NikolaiRuhe 我相信这个问题只问如何在 C 中做到这一点(见标题)。 C++ 部分仅供参考。
-
该标签应该被删除,然后。
-
@NikolaiRuhe:好的,为了清楚起见将其删除。
-
@Lundin:我在考虑更多关于 SFINAE 类型的事情,以及让编译器运行我的 constexpr 函数、类型检查等的可能性。
标签: c enums constants c-preprocessor