定义常量变量的最佳方法 我用C++编码,我想知道定义const变量的最好方法。< /P>

定义常量变量的最佳方法 我用C++编码,我想知道定义const变量的最好方法。< /P>,c++,static,namespaces,constants,C++,Static,Namespaces,Constants,据我所知,如果我想在cpp文件中定义一个常量变量,我们可以像以前那样编码:const static int LEN=5现在C++建议我们使用匿名命名空间:命名空间{const int Le= 5;} 我不知道如何在头文件中正确定义常量变量 我在一些头文件中看到了一些代码,如下所示: const int LEN = 5; const int LEN = 5; 这是最好的方法吗?为什么我们不编码const static int LEN=5在头文件中 我用C++编码,我想知道定义const变量的最

据我所知,如果我想在cpp文件中定义一个常量变量,我们可以像以前那样编码:
const static int LEN=5现在C++建议我们使用匿名命名空间:<代码>命名空间{const int Le= 5;}

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

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

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

<>我用C++编码,我想知道定义const变量的最好方法。< /P> 没有“最佳方式”。视情况而定

顺便说一句,听说过
constexpr

据我所知,如果我想在cpp文件中定义一个常量变量,我们可以像以前那样编码:
const static int LEN=5

是的,我们可以

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

还要注意,我不是在调用
LEN
一个“静态变量”

<> >现在C++建议我们使用匿名命名空间:<代码>命名空间{const int Le= 5;}< /Calp>

匿名命名空间中声明的所有内容都具有内部链接。但我不认为C++本身有什么建议。 我在一些头文件中看到了一些代码,如下所示:

const int LEN = 5;
const int LEN = 5;
C++有一个特殊的规定,使得命名空间范围的常量限定变量在默认情况下具有内部链接,即使没有
static
说明符

见:

注意,它不同于C

还要注意,它并不意味着“
const
包括
static
”。以这种方式思考是令人困惑的

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


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

静态
从何而来?你为什么要用它<定义
const
值时不需要code>static
。首先是什么引起了你的问题?@AnT dude,这是我的问题。。。我想知道我们是否应该/能够在头文件中编码
const static int LEN=5
(为了正确回答一个问题,最好首先知道是什么触发了它。)不,我们不应该。只需使用
const int LEN=5,无论它是在头文件中还是在其他任何地方。匿名名称空间也是不必要的。C++中的代码> const 已经包含了<代码>静态< /代码>。无需明确说明,“最好的方法”,如本文所述,是完全没有意义的。这就像问“什么是最好的车”。视情况而定。是否需要动力、燃油经济性、外观或保修。“最好的车”会有很大的不同,这取决于具体的要求。类似地,定义常量变量的各种方法都有其针对不同情况的特定语义。要想找出“定义常量变量的最佳方法”,你需要了解差异是什么,以及它们的含义,然后根据你的具体情况选择“最佳方法”。“C++”没有任何建议。我有一个问题:为什么不
const int LEN=5是否导致重新定义错误?我认为一个头文件可能包含多次。@Yves这是内部链接的属性:它是翻译单元的内部,其他翻译单元看不到它。将
LEN
放在标题中,每个翻译单元都有自己独特的
LEN
副本,所有这些副本都在各自翻译单元的内部。@Yves考虑语言功能,而不是关键字。