【发布时间】:2014-08-16 18:13:53
【问题描述】:
我看到this 的问题,我尝试按照该问题的答案进行操作。在头文件中使用 extern 关键字定义一个数组,然后在其他 cpp 文件中的该命名空间或类之外声明它。
它真的对我不起作用,我不确定是因为我使用的是 void 指针数组(即void* array[]),还是只是我的无知让我看不到问题。
这是我能想到的最短示例:
[cpp.cpp]
#include "h.h"
void main(){
void* a::b[] = {
a::c = a::d(1)
};
}
[h.h]
namespace a{
struct T* c;
struct T* d(int e);
extern void* b[];
}
所以问题是我收到错误: IntelliSense:无法在当前范围内定义变量“a::b”
我不知道为什么会这样。
【问题讨论】:
-
如果您还必须发布免责声明,如何更简洁?
-
int比void短一个字符...a::b在函数外部声明,定义也应该在外部,为什么要写在main内部? -
@OliCharlesworth 现在编辑了我的问题。
-
因此,您没有修复
void main(),而是删除了您输入错误内容的原因。杰出的。并且a::b的定义需要在命名空间范围内,而不是在块范围内。 -
@MarcGlisse 因为我想要尽可能短的版本,所以我使用了
void main,因为这样我就不必返回任何东西了。
标签: c++ arrays namespaces header-files void-pointers