是否可以转发声明一个静态数组

新手上路,请多包涵

我需要将静态数组放入 .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 许可协议

阅读 517
1 个回答

冒着回答稍微不同的问题的风险(Charles Bailey 很好地回答了您的问题),您可能希望使用带有 extern 的匿名命名空间。这可以防止其他翻译单元访问数组变量名。

 namespace {
    extern int bigIntArray[5000];
}

// Code that uses bigIntArray

namespace {
    int bigIntArray[5000] = { ... };
}

这可能会满足您的需求。

原文由 D. A. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏