2008-12-14 113 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; 
相關問題