我需要将静态数组放入 .cpp 文件中。这个数组只在这个 .cpp 中使用,所以我想将它声明为静态的。数组定义挺大的,自然要转发声明。
static int bigIntArray[5000];
/* other code using bitIntArray */
static int bigIntArray[5000] = {
0x00, 0x9900, 0xffee,
...
};
VC 9.0 报错:error C2086: ‘int bigIntArray[5000]’ : redefinition
如果我将“静态”更改为“外部”,问题就会消失,但我不喜欢这种解决方案。
为什么我不能转发声明一个静态变量?这是 C++ 标准所要求的吗?
原文由 Sherwood Hu 发布,翻译遵循 CC BY-SA 4.0 许可协议
冒着回答稍微不同的问题的风险(Charles Bailey 很好地回答了您的问题),您可能希望使用带有 extern 的匿名命名空间。这可以防止其他翻译单元访问数组变量名。
这可能会满足您的需求。