compiling

Come posso disabilitare la visualizzazione delle note per gli errori in g++?

Durante la compilazione,gli errori sono spesso accompagnati da una lunga serie di note (ciano).Esiste un flag di g++per disabilitare questo aspetto,mostrando solo l'errore stesso?

Il compilatore non lo farà per te, ma (finora...) gli sviluppatori del compilatore stanno seguendo una convenzione di lunga data (oltre 30 anni) adattata da altri compilatori che fornisce le informazioni essenziali sulla prima riga, usando error: o warning: per contrassegnare l'avviso. Se grep stderr per quelli, vedrai le informazioni di avviso/errore minime.

grep è un buon punto di partenza (e l'output "grep -n" è utile di per sé). Questi messaggi seguono uno schema di nome file, numero di riga, messaggio comune a diversi strumenti. L'ho usato in vi-like-emacs qui .

Abbastanza recentemente (nel 2014) gcc/g++ ha iniziato ad aggiungere uno "stack di chiamate" ai messaggi, che fornisce informazioni extra. Ciò si basa su una modifica al preprocessore per tenere traccia dei numeri di riga che possono essere disattivati ​​con un'opzione -P (indicata qui ), ma sembra essere integrato in modo incompleto in un modulo che sopprimerebbe lo stack di chiamate.

L'uso del clang non aiuterebbe molto in questo; può essere anche molto prolisso. Lo sviluppo di gcc/g++ ha aggiunto molti messaggi come indicato qui .




Durante la compilazione, gli errori sono spesso accompagnati da una lunga traccia (ciano). Esiste un flag g++ per disabilitarlo, mostrando solo l'errore stesso?

  • Puoi utilizzare uno strumento vecchio e non più supportato come STLFilt .

  • Puoi passare a Clang o usarlo per segnalare solo errori ed eseguire la compilazione finale in GNU g++ .

  • È possibile acquisire una maggiore familiarità con l'STL che renderà più semplice la decifrazione.

    Una buona comprensione dell'STL e di come usarlo ti aiuterà a evitare molti errori in primo luogo. In secondo luogo, spesso i messaggi di errore si riferiscono a funzioni nell'origine STL: se si ha un'idea approssimativa di come viene implementato l'STL, questo può essere estremamente utile per decifrare l'argomento del messaggio di errore. Le versioni più recenti del compilatore g++ a volte migliorano l'output, rendendolo più utile e meno dettagliato.

Non è esattamente ciò che si desidera,ma può accorciare l'uscita:

  • Usa il flag -fmax- errors o l'opzione -Wfatal-errors :

    -fmax-errors=n

    Limita il numero massimo di messaggi di errore a n, a quel punto GCC si salva invece di tentare di continuare l'elaborazione del codice sorgente. Se n è 0 (impostazione predefinita), non c'è limite al numero di messaggi di errore prodotti. Se viene specificato anche -Wfatal- errors , allora -Wfatal-errors ha la precedenza su questa opzione.

    -Wfatal-errors

    Questa opzione fa sì che il compilatore interrompa la compilazione al primo errore che si verifica piuttosto che cercare di continuare e stampare ulteriori messaggi di errore.