È possibile istruire il compilatore C++ di GNU a fermarsi dopo 5 errori trovati? Non riesci a trovare questo nella documentazione. Grazie in anticipo.Come istruire GCC a fermarsi dopo 5 errori?
risposta
L'opzione da riga di comando -fmax-errors=N
indirizza il compilatore a rinunciare dopo gli errori N. Questa opzione è presente in GCC 4.6 e successive.
L'opzione da riga di comando -Wfatal-errors
indica al compilatore di abbandonare dopo un errore. Questa opzione è presente in GCC 4.0 e versioni successive.
In entrambi i casi, gli avvertimenti non contano fino al limite a meno che non si specifichi anche -Werror
.
Devo chiedere perché vorresti farlo. A volte l'errore che esiste nel codice non è il primo o addirittura trovato nei primi cinque errori. A volte è al di là di questo e solo è riconoscibile una volta scorrere l'elenco. Un metodo migliore potrebbe essere quello di suddividere il codice e inserirlo in librerie più piccole se si è infastiditi dai tempi di compilazione. Oppure, se ti preoccupi delle cose che scorrono dallo schermo di una riga di comando, usa l'operatore '>>' per reindirizzare i messaggi in un file.
È solo una questione di leggibilità del registro degli errori. 5 errori sono più che sufficienti per capire il problema, almeno nel mio caso :) – yegor256
Davvero? La mia esperienza è stata esattamente l'opposto - specialmente in C++, a meno che non stia facendo specifici lavori di refactoring che creano molti errori discreti (cambiando gli argomenti in un metodo comunemente usato, ad esempio) è probabile che il primo errore sia l'unico che è assolutamente inutile. – zwol
@ FaZend.com Vedo, mi dispiace, ho fornito una non risposta allora. La risposta di Zack qui sotto è probabilmente la migliore che riuscirai a fare a meno che tu non abbia intenzione di scrivere un piccolo script per analizzare questi errori e uccidere il processo dopo che sono stati generati 5 errori. (anche se potrei essere abbastanza ignorante in questa affermazione.) – wheaties
Gradirei anche una simile opzione. Per ora, sto usando la seguente soluzione alternativa per ottenere i primi cinque errori:
<make> 2>&1|grep error|head -5
È possibile utilizzare l'opzione gcc:
-fmax-errors=5
per questo scopo.
Questo dovrebbe essere un commento. – Zyerah
@Telthien Perché? Questa mi sembra una risposta. –
@Telthien http://stackoverflow.com/questions/how-to-answer dice "ogni risposta che fa andare il richiedente nella giusta direzione è utile" e "la brevità è accettabile". Le risposte sono progettate per fornire una soluzione, a volte può essere realizzata in una singola frase. –
- 1. debug vtable errori del linker a GCC
- 2. PyUnit: fermarsi dopo il primo test fallito?
- 3. Come fermarsi e continuare un pthread?
- 4. Come istruire PowerShell a raccogliere oggetti .NET come XmlSchemaSet?
- 5. Come istruire Makefile per utilizzare diversi compilatori
- 6. Come fa un processo node.js a sapere quando fermarsi?
- 7. Come compilare boost con GCC 5 usando il vecchio ABI?
- 8. come istruire gcc/clang per l'output di file temporanei in una particolare directory
- 9. Come istruire la visualizzazione a schede di Gmail?
- 10. errori misteriosi dopo l'aggiornamento a Xcode 6
- 11. UIWebView non fermarsi subito
- 12. Come correggere scroll div dopo una certa altezza e fermarsi dopo aver raggiunto altri div?
- 13. Possibili errori PDOException (MySQL 5)?
- 14. Come reindirizzare a un'altra pagina dopo 5 minuti?
- 15. Avviso gcc "'verrà inizializzato dopo'
- 16. Come istruire il compilatore a generare un alias per una funzione virtuale?
- 17. Come gestire gli errori execvp (...) dopo fork()?
- 18. Come dire a Boost.Test di fermarsi al primo caso di test fallito?
- 19. SDK iOS 5 non disponibile dopo l'aggiornamento a Xcode 4.5
- 20. Dopo l'aggiornamento a MVC 5, iframe non funziona più
- 21. 403 errori dopo l'aggiornamento a Spring Security 4.0.0
- 22. Quando aspettarsi e quando fermarsi?
- 23. Come istruire cmake/automoc per trovare l'header esterno
- 24. intesa GCC 5 del _GLIBCXX_USE_CXX11_ABI o il nuovo ABI
- 25. Overflow GCC a sinistra
- 26. Come istruire Ajax Minifier per rimuovere console.log da JavaScript
- 27. Modulo di invio automatico dopo 5 secondi
- 28. Come dire a distutils di usare gcc?
- 29. espressione regolare per fermarsi al primo match
- 30. Ignora UIAlertView dopo 5 secondi Swift
Darei questo +1 ma per la frase su '-Werror'. Credo che gli avvertimenti assolutamente * dovrebbero * essere trattati come se fossero errori, perché la maggior parte degli avvertimenti è un'indicazione del codice buggato. – greyfade
@Zack, grazie, sto già usando questo flag :) – yegor256
@greyfade, penso anche che gli avvertimenti dovrebbero generalmente essere trattati come must-fix, ma sfortunatamente alcuni degli avvertimenti di gcc possono attivarsi o meno a seconda del livello di ottimizzazione, il contenuto di le intestazioni di sistema e qualsiasi numero di altre cose che non puoi controllare facilmente.Quindi, puoi ottenere tutti gli avvertimenti sulla tua piattaforma di costruzione canonica, ma poi un povero schmuck cerca di costruire in un ambiente più esotico e fa esplodere. – zwol