【问题标题】:Is it better to use #defines, enumeration values or const ints to define constant values? [duplicate]使用#defines、枚举值还是const ints来定义常量值会更好吗? [复制]
【发布时间】:2012-11-09 22:18:56
【问题描述】:

可能重复:
Should I use #define, enum or const?

最近我发现使用枚举值来定义常量很方便,但我很想知道使用 const ints、#defines 与常量的枚举值的优缺点是什么?

【问题讨论】:

    标签: c++


    【解决方案1】:

    我相信将#define 用于常量是C 的遗物,因为在C 中并不总是有const 关键字。现在您可以改用const int,而且应该。至于enum,C++11 提供了一些与enum 一起值得一试的简洁功能,如果您要拥有多个以某种方式相关的常量,它们可能比任何东西都更适合您的需求。

    【讨论】:

    • C 中有 is 关键字 const。它的用处不大,因为当 C 说它需要“常量表达式”时,它表示文字,而不是 @987654329 @.
    • 我不认为 const 关键字一直存在。是后来介绍的,在引入C++之后
    • 肯定是present in C89/ANSI C。那是在 Bjarne 开始研究后来成为 C++ 的东西之后,并且(根据 Wikipedia)甚至在他们开始称它为 C++ 的几年之后。但我怀疑 C 很早就开始采用 C++ 特性(直到 1990 年才将 // cmets 纳入标准,与 const 相比,这是一个非常简单的特性)。看来 K&R 没有const。但我没能找到源代码,无论是源自 C 还是源自 C++。
    • 此外,常量是数字,枚举在 C++03 中具有(某种)类型,在 C++11 中可以具有强类型。所以不同的解决方案适合不同的问题。
    • 没关系,你是对的。如Sibling Rivalry: C and C, Bjarne Stroustrup(第5页)所述,C++ 引入了const(1981 年或更早)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多