【发布时间】:2020-04-06 00:43:15
【问题描述】:
在 C++17 中,像这样声明全局常量有什么区别:
namespace ns
{
static constexpr const auto global_variable = 47;
}
同时指定const 修饰符,并且:
namespace ns
{
static constexpr auto global_variable = 47;
}
没有指定const?如果是,有哪些区别,在哪些场景下推荐使用哪个版本的声明?
【问题讨论】:
-
在 C++17 中你也可以定义一个全局常量
inline而不是static。或者只是在一个匿名命名空间中。 -
在给出的例子中,没有。但是
static constexpr char* global_variable = "Happy";将constexpr应用于typechar*,就好像它是char* const。这不是你真正想要的。所以你需要做static constexpr char const* global_variable = "Happy";。 -
@DeiDei 好吧,它已经在
namspace中,在我的示例中,使用inline而不是static有什么好处?
标签: c++ static global-variables constants constexpr