Domanda

Ho il seguente pezzo di eredità codice C ++ che non compila:

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

extern ostream *debug;

GCC (g ++) si lamenta: "initializer atteso prima di‘*’token"

Guardandosi intorno sembra più comune di dichiarare questi come riferimenti esterni, in questo modo:

extern ostream& debug;

Perché è un puntatore non valido, ma un punto di riferimento si trova in questa situazione?

SOLUZIONE:

Il vero problema, come detto sotto è che l'identificatore std :: namespace manca. Apparentemente, questo era comune in più vecchio codice C ++.

È stato utile?

Soluzione

Sì, si può dichiarare un puntatore utilizzando extern. Il tuo errore è più probabile che si è dimenticato di qualificarsi tramite std:::

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

extern std::ostream *debug;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top