コンパイルされない次のレガシー C++ コードがあります。
#include <stdio.h>
#include <iostream>
extern ostream *debug;
GCC (g++) が不平を言う:「'*' トークンの前に初期化子が必要です」
周りを見回すと、次のようにこれらを外部参照として宣言するのがより一般的です。
extern ostream& debug;
ポインターが有効ではないのに、参照がこの状況にあるのはなぜですか?
解決:
後述するように、本当の問題は std:: 名前空間指定子が欠落していることです。どうやら、これは古い C++ コードでは一般的でした。