自从我上次使用C ++以来已经很久了。
情况:我有一个大型数组需要在不同的.cpp
文件中可用。它是不可变的,所以我认为我最好在头文件中加上const char array[] = …
。但据我所知,现在数组在编译的二进制文件中出现了好几次。
在标头中声明大型常量数组的正确方法是什么,因此它们不会被编译到每个源对象中?
答案 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