2008-10-05 19 views
13

Çapraz platform kodumu temizlemeye yardımcı olmak için gcc derleme seçeneklerimi son zamanlarda ekledim -pedantic ve -pedantic-errors. Harici dahil üstbilgi dosyalarında hatalar bulana kadar hepsi iyiydi. Dış başlığında kontrol bu hatayı kapatmak için bir yol IE orada dosyaları mı: dosyalarını kontrolDış kütüphane başlıklarında gcc derleyici pedantik hataları nasıl yok sayılır?

Tut böyle dahildir:

#include "myheader.h" 

Durdurma kontrol böyle dosyaları içerir:

#include <externalheader.h> 

Aldığım hatalar:

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 

cevap

-3

Başlıkları düzeltebilir ve ffmpeg'ye bir yama gönderebilirsiniz; -pedantic ile uyumluluk değerli bir hedeftir, bu yüzden eminim ki, özellikle de sadece sondaki virgüllerin ve benzerlerinin kaldırılması söz konusuyduysa.

+10

Bu aslında soruyu cevaplamıyor. – Nick

+1

@KPexEA: Lütfen, kabulü daha iyi yanıtlara yeniden atamayı düşünün. Bu, SO arama sonuçlarının ve insan okuyucunun cevabı bulmasına yardımcı olur. – sehe

0

Aklıma gelen bir fikir (değil)

sizin derleyici'nın çıkışını alacak bir komut dosyası hazırlayın ve belirli bir listede (sizin başlıklar olmayan başlıkları içeren tüm satırları kaldırın: bunun için bir 'kutunun dışında' parametresi) olup olmadığını bilmek).

Bunu böyle yapmak çok zor olmamalı.

29

-Wsystem-headers seçeneğini gcc ile kullanma, normalde bastırılan sistem üstbilgileriyle ilişkili uyarı iletilerini yazdıracaktır. Ancak, gcc'in temelde bu dosyaları sistem üstbilgileri olarak ele almasını sağlamanız gerekir. Bu nedenle, "-isystem/usr/local/ffmpeg" (veya bu paketi kurduğunuz her yerde) geçişini gcc'nin içerdiği dosyalardan gelen hataları yok saymasını sağlayın. Bu dizinleri de.

+0

harika! Bu cevap kabul edilmiş olmalı! –

1

gcc'ye bu uyarıları yaymayı bırakmasını söylemenin herhangi bir yolunu bilmiyorum. Ancak, üçüncü taraf uyarılarını hackishly bir şekilde llvm-gcc (veya sadece gcc) -pedantic 2> & 1 | grep -v "/ usr /"

-2

Bir şeyle kaldırabilirsiniz. bu zamanda üstbilgiler ve diğerleri değil. Bunu bir özellik olarak önerebilirsiniz, ancak ideal olarak karşı çıkılacağından şüpheleniyorum, herkes akıl almazdı.

Yapabilecekleriniz, başlıkları kendiniz düzeltmek, bir yama oluşturmak ve sonra bu yükseltmeyi kitaplığı yükseltiyorsanız, başlıkların sonraki sürümlerine uygulamaktır.

Düzeltme ekini kabul edeceği umuduyla ffmpeg'e de gönderin, ancak her iki durumda da kabul etmese bile kapsanırsınız.

+0

ffmpeg üstbilgileri, oluşturmak için kullandığı -pedantic -std = c99 ile geçerlidir. Ama sanırım kamu başlıkları ne olursa olsun geçerli olmalı ... "C" de ... –

İlgili konular