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

时间:2014-02-28 08:48:50

标签: c++ c arrays

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

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

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

2 个答案:

答案 0 :(得分:9)

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

您想在标题中声明它:

extern const char array[];

并在.c / .cpp文件中将其定义为:

const char array[] = ... ;

答案 1 :(得分:-3)

在头文件中使用标头保护。所以它阻止了多重声明。 例如

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