你能在C ++中将指针声明为extern吗?

时间:2008-12-14 03:34:16

标签: c++ pointers legacy

我有以下一些无法编译的遗留C ++代码:

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

extern ostream *debug;

GCC(g ++)抱怨:“在'*'令牌之前预期的初始化程序”

环顾四周似乎更常见的是将这些声明为外部引用,如下所示:

extern ostream& debug;

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

解决方案:

如下所述,真正的问题是缺少std :: namespace说明符。显然,这在较旧的C ++代码中很常见。

1 个答案:

答案 0 :(得分:7)

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

取消资格
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>

extern std::ostream *debug;