2008-12-14 119 views
1

我有没有编译的遗留的C++代码以下位:你可以在C++中声明一个指针作为extern吗?

#include <stdio.h> 
#include <iostream> 

extern ostream *debug; 

GCC(G ++)抱怨:

环顾四周,似乎更常见的声明“之前,‘*’标记的预期初始化”这些作为外部参考,如下所示:

extern ostream& debug; 

为什么指针无效,但引用是在这种情况下?

SOLUTION:

真正的问题,如下面提及的是,性病::命名空间描述符不存在。显然,这在旧的C++代码中很常见。

+0

不知道这将是一个适当的反应,但我认为Visual Studio是罚款之类的事情。 – DShook 2008-12-14 03:35:49

+1

您可能会发现,“较旧的C++代码”预计会使用编译器进行编译,该编译器无法识别或未强制执行命名空间。 – 2008-12-14 04:22:52

回答

7

是的,你可以使用extern声明一个指针。你的错误很可能是你忘了使用std::资格:

如果
// note the header is cstdio in C++. stdio.h is deprecated 
#include <cstdio> 
#include <iostream> 

extern std::ostream *debug; 
相关问题