Mik*_*ron 4 c arrays global-variables visual-c++
好的,奇怪的提问时间!
我正在重构一些旧的C++代码,它声明了一堆数组,如下所示:
static SomeStruct SomeStructArray[] = {
{1, 2, 3},
{4, 5, 6},
{NULL, 0, 0}
}
Run Code Online (Sandbox Code Playgroud)
等等.它们分散在源文件中,并在声明它们的地方使用.
但是,我想将它们移动到一个源文件中(主要是因为我想出了一种自动生成它们的方法).当然,我天真地尝试为他们制作标题:
static SomeStruct SomeStructArray[];
Run Code Online (Sandbox Code Playgroud)
实际上,即使我知道这是错的,但无论如何这里是编译错误:
error C2133: 'SomeStructArray' : unknown size arrays.h
error C2086: 'SomeStruct SomeStructArray[]' : redefinition arrays.cpp
Run Code Online (Sandbox Code Playgroud)
所以,我想,这是做正确的方法吗?
如果你打算把这种阵列本身都在一个文件中(和显然是从其他文件访问它们),你需要删除的static
自定义(这使得他们只能在同一翻译单元(即文件)中可见).
然后,在标题中,您需要extern
为每个声明添加一个.
最后,当然,当你有一个SomeStruct
(例如)数组时,你需要确保SomeStruct
在你尝试定义它们的数组之前可以看到它的定义.