【发布时间】:2008-12-14 03:34:15
【问题描述】:
我有以下无法编译的遗留 C++ 代码:
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g++) 抱怨:“'*' 标记之前的预期初始化程序”
环顾四周,将这些声明为外部引用似乎更常见,如下所示:
extern ostream& debug;
为什么指针无效,但引用在这种情况下?
解决方案:
如下所述,真正的问题是缺少 std:: 命名空间说明符。显然,这在较旧的 C++ 代码中很常见。
【问题讨论】:
-
不确定这是否是一个正确的回应,但我认为 Visual Studio 可以处理这种事情。
-
您可能会发现“旧 C++ 代码”需要使用无法识别或不强制命名空间的编译器进行编译。