定义常量变量的最佳方法

The best way to define a const variable

本文关键字:最佳 方法 变量 常量 定义      更新时间:2023-10-16

我正在使用C++编码,我想知道定义常量变量的最佳方法。

据我了解,如果我想在 cpp 文件中定义一个 const 变量,我们可以像这样编写:const static int LEN = 5;现在C++建议我们使用匿名命名空间:namespace { const int LEN = 5; }

我不知道如何在头文件中正确定义常量变量。

我在某些头文件中看到了一些代码,如下所示:

const int LEN = 5;

那么这是最好的方法吗?为什么我们不在头文件中编写const static int LEN = 5;代码?

我正在使用C++编码,我想知道定义常量变量的最佳方法。

没有"最好的方法"。这要看情况。

顺便说一句,听说过constexpr吗?

据我了解,如果我想在 cpp 文件中定义一个 const 变量,我们可以像这样编写之前的代码:const static int LEN = 5;

是的,我们能。

请注意,使用static关键字声明的命名空间范围内的内容具有内部链接

另请注意,我不是在LEN为"静态变量"。

现在C++建议我们使用匿名命名空间:namespace { const int LEN = 5; }

在匿名命名空间中声明的所有内容都具有内部链接。但我不认为C++本身提出任何建议。

我在某些头文件中看到了一些代码,如下所示:

const int LEN = 5;

C++有一个特殊的规定,使命名空间范围的 const 限定变量默认具有内部链接,即使没有static说明符也是如此。

请参阅:https://en.cppreference.com/w/cpp/language/storage_duration#Linkage

请注意,它与 C 不同。

另请注意,这并不意味着"const包括static"。以这种方式思考是令人困惑的。

为什么我们不在头文件中编写const static int LEN = 5;代码?

实际上,我们可以。由于非技术原因,它甚至可能是有益的。如果您认为阅读您的代码的受众不知道该特殊规定,则static说明符将向您的受众明确表示该变量具有内部链接。