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

Declaring large array in C++ header

本文关键字:C++ 数组 声明      更新时间:2023-10-16

自从我上次与C++一起工作以来已经很久了。

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

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

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

您想在标头中声明它:

extern const char array[];

并在您的 .c/.cpp 文件中这样定义它:

const char array[] = ... ;

在头文件中使用标头保护。因此,它可以防止多个声明。例如。

#ifndef HEADER_H
#define HEADER_H
const char array[] = …
.
.
#endif //HEADER_H