Decifrare C++ modello messaggi di errore
-
09-06-2019 - |
Domanda
Sto davvero cominciando a capire che cosa la gente intende quando si dice che C++i messaggi di errore sono terribile in quanto a modelli.Ho visto terribilmente lungo errori per le cose semplici come una funzione che non corrisponde il suo prototipo.
Ci sono trucchi per la decifrazione di questi errori?
EDIT:Io sto usando sia gcc e MSVC.Entrambi sembrano essere abbastanza terribile.
Soluzione
Si può provare il seguente strumento per rendere le cose più sane:
Altri suggerimenti
Io sicuro come l'inferno non può.Piccoli errori di esplodere in pagine e pagine di spazzatura illeggibile.Di solito la mattina presto, prima del caffè.:(
Il mio unico consiglio è quello di prendere un respiro profondo, iniziare in alto e provare e analizzare le informazioni importanti.(Lo so, più facile a dirsi che a farsi, giusto?).
Come @nsanders detto STLFilt è una buona soluzione.Una casa di produzione STLFilt (quando non si vuole andare a la briga di installazione di Perl) è quello di copiare il messaggio di errore con un editor di testo e sostituire parti dell'errore fino a quando non diventa più gestibile.
ad es.
s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g
In meno geek termini questo significa che:
Sostituire:
std::basic_string<char,std::char_traits<char>,std::allocator<char>>
Con:
string
Alcuni compilatori dare il meglio di messaggi di altri.Che compilatore stai usando?Detto questo, sono tutti piuttosto male.C++0X risolvere la maggior parte di questo problema (vedi concetti), ma la norma non sarà rilasciato fino al 2009, e un ampio sostegno sarà probabilmente anche più tardi :-(
Almeno in Visual Studio, c'è più informazione data di Uscita di Costruire finestra, piuttosto che l'Elenco degli errori.Ho avuto un modello di errore in Errore l'Elenco stato, "Non è possibile convertire Pippo<int> per Pippo<int>".C'erano alcune righe seguenti effettivo di errore nella finestra di Output che mi ha aiutato a decifrare ciò che il vero problema è stato.