我在 C++ Visual Studio 中遇到了这些外部定义变量的问题。
我有大量数据表被编译成代码,而不是被读取。它们是 .cpp 文件,定义如下:
Table.cpp
namespace EX{
const int Var_Length=31;
const double Var[31]={31 Doubles};
}
在我的同一个解决方案中,我有另一个 class.h 和 class.cpp,我试图在其中声明这些变量。
类.h
namespace EX{
class MyClass{};
extern const int Var_Length;
extern const double Var[];
}
我已经阅读了很多帖子,但没有多大帮助。有些人建议他们可能需要成为一个全局变量。就 C++ 语法而言,我仍然是一个新手,但我还没有看到任何涵盖命名空间外部变量的内容。
常量变量具有内部联系。也就是说,它们不能在声明它们的编译单元之外引用。
你应该写
namespace EX{
extern const int Var_Length=31;
extern const double Var[31]={31 Doubles};
}
来自 C++ 17 标准(6.5 程序和链接)
3 具有名称空间范围 (6.3.6) 的名称具有内部链接,如果它是
的名字(3.2) — 非易失性 const 限定类型的非内联变量 既没有明确声明为 extern 也没有事先声明为 有外部链接;或