¿es posible forzar a gcc a informar errores, pero seguir compilando más allá de ellos? Básicamente, estoy tratando de generar una lista de errores en un archivo .c, pero gcc siempre termina en el primer error. He estado buscando en Google por un tiempo y esta no es una respuesta obvia a partir de lo que puedo decir.Cómo obtener gcc para omitir errores, pero aún así generarlos.
Respuesta
Las versiones actualizadas de GCC intentarán omitir ciertos errores cuando sea posible.
Digamos que el cuerpo de foo(){...
contiene una violación de const. La unidad de traducción no producirá un archivo objeto, pero cualquier compilador decente continuará más allá de este error en bar(){...
Otros errores no se pueden recuperar. Si te pierdes algunas llaves, no hay una conjetura razonable acerca de cómo proceder.
GCC termina cuando no puede ir más allá.
Si un compilador encuentra un error, tiene que adivinar cuál debería ser el código correcto e intentar seguirlo. Efectivamente eso significa que siempre debe corregir el primer error y volver a ejecutar las compilaciones, ya que el resto no tendrá sentido.
Asegúrese de que no ha activado -Wfatal-errors
.
El cartel parece dispuesto a renunciar a tener ninguna salida compilada a favor de tener una lista completa de errores. Algunos errores no interrumpirían el análisis del programa a pesar de que impedirían la salida. Pero otros, digamos que no coinciden() o {} o "", probablemente requerirían un gran grado de inteligencia para recuperarse hasta el punto en que el análisis posterior podría ser significativo. –
Esto es correcto, me podría importar menos en este punto sobre un objeto de salida, solo me preocupa una lista de errores. La mayoría de los errores se deben a que estoy intentando construir un módulo de kernel para ARCH = brazo en lugar de x86, y hay muchos detalles de x86, es decir, rdtscll (lee el contador de marca de tiempo, que es específico de x86), por lo que generalmente la estructura del código y la sintaxis está bien. – chrisvarnz
De gcc online doc:
-fmax-errors=n
Limits the maximum number of error messages to n, at which point GCC bails out rather than attempting to continue processing the source code. If n is 0 (the default), there is no limit on the number of error messages produced. If -Wfatal-errors is also specified, then -Wfatal-errors takes precedence over this option.
- 1. Diseña un botón para que parezca un EditText (pero aún así te comportes como un botón)
- 2. jQuery: ¿cómo se desactiva uno todo dentro de un div? pero aún así mantener todo visible?
- 3. ¿Cómo se puede configurar el teclado virtual de EditText para usar números inicialmente, pero aún así permitir texto?
- 4. LINQ: Agrupe por agregado pero aún así obtenga información de la fila más reciente?
- 5. Cómo hacer IvParameterSpec aleatorio pero aún descifrar
- 6. No hacer una copia de seguridad en iCloud pero aún así rechazado
- 7. solo toque en UIWebView, pero aún así apoyar la selección de texto y enlaces
- 8. La URL es accesible con el navegador pero aún así FileNotFoundException con URLConnection
- 9. rspec 2: detecta la llamada al método pero aún así tiene que realizar su función
- 10. tengo un require ("config.php") con matrices, pero aún así da error Undefined variable
- 11. ¿Cómo instalar matplotlib sin errores de gcc?
- 12. ¿Cómo puedo obtener maven-release-plugin para omitir mis pruebas?
- 13. depuración vtable errores de enlace en GCC
- 14. biblioteca estática, pero aún necesito encabezados?
- 15. C++ Semicolon after class, struct, enum, ... inútil pero los compiladores aún emiten errores?
- 16. ¿Hay algo así como memcached, pero para listas ordenadas?
- 17. advertencia mcrypt pero aún descifra los datos
- 18. ¿Ocultar advertencia GCC "establecer pero no usar"?
- 19. IIS 7.5. No se pueden deshabilitar las reglas de reescritura de Url (eliminé las reglas pero aún así afectan)
- 20. Esquema XML: ¿Puedo hacer que algunos de los valores de un atributo sean necesarios pero aún así permitir otros valores?
- 21. git workflow: ¿Puedo evitar que cierto archivo se fusione con otra rama pero aún así mantenerlo bajo control de versión?
- 22. Rails ¿Diseñar, cómo omitir el correo electrónico de confirmación pero todavía generar un token de confirmación?
- 23. ¿Cómo obtener el comando del enlazador GCC?
- 24. ¿Cómo puedo pasar una matriz de parámetros de PDO y aún así especificar sus tipos?
- 25. ¿Cómo puede el código fuente de Android no tener un método principal y aún así ejecutarse?
- 26. En ARC, ¿aún así es aconsejable crear un @autoreleasepool para bucles?
- 27. Algoritmo para Omitir Oraciones
- 28. Cómo resolver los errores de definición múltiple en gcc linux?
- 29. ¿Cómo puede jQuery devolver una matriz y aún así tener un objeto jQuery?
- 30. cómo obtener la explicación de gcc -s?
¿El compilador indica si un error es irrecuperable? Por ejemplo, a continuación, publicaré algunos resultados. make continúa con el siguiente objeto, pero no está claro si el error gcc anterior dio como resultado una terminación de la compilación de ese objeto, o si realmente continuó pero pasó a no encontrar más errores. – chrisvarnz
CC [M] /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.o /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.c:356:2: error: desconocido campo 'ioctl' especificado en el inicializador /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.c:356:2: advertencia: inicialización desde el tipo de puntero incompatible make [2]: [/ home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.o] Error 1 (ignorado) CC [M] /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_hw.o – chrisvarnz
Cambié el material ioctl a unlocked_ioctl y este objeto se compiló sin problemas, ¡así que creo que lo anterior muestra un ejemplo de gcc continuando después del error! gracias por la explicación – chrisvarnz