在C++标头中声明大数组

Lan*_*nbo 1 c c++ arrays

自从我上次使用C++以来已经很久了.

情况:我有一个需要在不同.cpp文件中可用的大型数组.它是不可变的,所以我认为我最好const char array[] = …在头文件中添加一个.但据我所知,现在数组在编译的二进制文件中出现了好几次.

在标头中声明大型常量数组的正确方法是什么,因此它们不会被编译到每个源对象中?

abl*_*igh 9

如果在头文件中定义一个数组(无论是否初始化它),您将获得大量副本.

您想在标题中声明它:

extern const char array[];
Run Code Online (Sandbox Code Playgroud)

并在.c/ .cppfile中定义它:

const char array[] = ... ;
Run Code Online (Sandbox Code Playgroud)

  • @Enigma,不应该是`静态`.在`C`中,静态全局变量对于其他`.c`文件是不可见的,即链接器不会匹配`.``文件中包含的`extern`与`.c`中的定义匹配. `实际上有数组的文件. (2认同)