我有以下一些无法编译的遗留C ++代码:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC(g ++)抱怨:“在'*'令牌之前预期的初始化程序”
环顾四周似乎更常见的是将这些声明为外部引用,如下所示:
extern ostream& debug;
为什么指针无效,但引用是在这种情况下?
解决方案:
如下所述,真正的问题是缺少std :: namespace说明符。显然,这在较旧的C ++代码中很常见。
答案 0 :(得分:7)
是的,你可以使用extern声明一个指针。您的错误很可能是您忘记使用std::
:
// note the header is cstdio in C++. stdio.h is deprecated
#include <cstdio>
#include <iostream>
extern std::ostream *debug;