¿Cómo ignorar los errores pedantes del compilador gcc en los encabezados de las bibliotecas externas?

StackOverflow https://stackoverflow.com/questions/172484

Pregunta

Recientemente agregué -pedantic y -pedantic-errors a mis opciones de compilación de gcc para ayudar a limpiar mi código multiplataforma. Todo estuvo bien hasta que encuentra errores en los archivos de encabezado externos incluidos. ¿Hay alguna manera de desactivar este error al verificar en los archivos de encabezado externos IE:

Siga buscando archivos incluidos de esta manera:

#include "myheader.h"

Deje de buscar archivos de inclusión como este:

#include <externalheader.h>

Aquí están los errores que obtengo:

g++ -Wall -Wextra -Wno-long-long -Wno-unused-parameter -pedantic --pedantic-errors
-O3 -D_FILE_OFFSET_BITS=64 -DMINGW -I"freetype/include" -I"jpeg" -I"lpng128" -I"zlib"
-I"mysql/include" -I"ffmpeg/libswscale" -I"ffmpeg/libavformat" -I"ffmpeg/libavcodec"
-I"ffmpeg/libavutil" -o omingwd/kguimovie.o -c kguimovie.cpp

In file included from ffmpeg/libavutil/avutil.h:41,
             from ffmpeg/libavcodec/avcodec.h:30,
             from kguimovie.cpp:44:
ffmpeg/libavutil/mathematics.h:32: error: comma at end of enumerator list
In file included from ffmpeg/libavcodec/avcodec.h:30,
             from kguimovie.cpp:44:
ffmpeg/libavutil/avutil.h:110: error: comma at end of enumerator list
In file included from kguimovie.cpp:44:
ffmpeg/libavcodec/avcodec.h:277: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:303: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:334: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:345: error: comma at end of enumerator list
ffmpeg/libavcodec/avcodec.h:2249: warning: `ImgReSampleContext' is deprecated
(declared at ffmpeg/libavcodec/avcodec.h:2243)
ffmpeg/libavcodec/avcodec.h:2259: warning: `ImgReSampleContext' is deprecated
(declared at ffmpeg/libavcodec/avcodec.h:2243)
In file included from kguimovie.cpp:45:
ffmpeg/libavformat/avformat.h:262: error: comma at end of enumerator list
In file included from ffmpeg/libavformat/rtsp.h:26,
             from ffmpeg/libavformat/avformat.h:465,
             from kguimovie.cpp:45:
ffmpeg/libavformat/rtspcodes.h:38: error: comma at end of enumerator list
In file included from ffmpeg/libavformat/avformat.h:465,
             from kguimovie.cpp:45:
ffmpeg/libavformat/rtsp.h:32: error: comma at end of enumerator list
ffmpeg/libavformat/rtsp.h:69: error: comma at end of enumerator list
¿Fue útil?

Solución

Podrías arreglar los encabezados y enviar un parche a ffmpeg; la compatibilidad con -pedantic es un objetivo valioso, así que estoy seguro de que lo considerarían, especialmente si solo implicaba eliminar las comas finales y cosas así.

Otros consejos

Al utilizar la opción -Wsystem-headers con gcc, se imprimirán los mensajes de advertencia asociados con los encabezados del sistema, que normalmente se suprimen. Sin embargo, está buscando que gcc trate estos archivos como encabezados del sistema, por lo que podría intentar pasar " -isystem / usr / local / ffmpeg " (o donde sea que instaló ese paquete) para que gcc ignore los errores de los archivos incluidos en estos directorios también.

No conozco ninguna forma de decirle a gcc que deje de emitir esas advertencias. Sin embargo, puedes eliminar las advertencias de terceros por hackers con algo como llvm-gcc (o solo gcc) -pedantic 2 > & amp; 1 | grep -v " / usr / "

Una idea que me viene a la mente (no sé si hay un parámetro 'listo para usar' para esto):

Prepare un script que tome la salida de su compilador y elimine todas las líneas que contienen encabezados que no están en una lista específica ( sus encabezados).

No debería ser tan difícil hacerlo de esta manera.

No puedes decirle a GCC que sea pedante sobre algunos encabezados y no sobre otros en este momento. Puede sugerirlo como una característica, aunque sospecho que será resistido ya que idealmente todos serían pedantes.

Lo que puede hacer es arreglar los encabezados usted mismo, generar un parche y luego aplicar ese parche a versiones posteriores de los encabezados si actualiza la biblioteca.

Envíe el parche a ffmpeg también con la esperanza de que lo adopten, pero de cualquier manera está cubierto incluso si no lo aceptan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top