Nasıl'In uyarıları TÜM (gerçekten) açmak için?
-- Gerçekten -- enable etmek istiyorumTÜMGCC uyarıları var. (Çok kolay...) sanırsın
-Wall
hile yapabilir, ama hayır sanırsın! Hala-Wextra
gerekir.-Wextra
hile yapabilir, ama hayır sanırsın! Uyarılar here verilmiş (örneğin,-Wshadow
) tüm bu tarafından sağlanıyor. Ve ben hala bu liste çok kapsamlı ise hiçbir fikrim yok.
Nasıl etkinleştirmek için GCC söylerim (Eğer, ve, ya ama!)tümsahip uyarıları?
CEVAP
Edemezsin.
GCC 4.4.0 için manuel sürüm için kapsamlı sadece, ama 4.4.0 için mümkün olan tüm uyarılara listesi yok. Ama, örneğin bağlantı sayfasında bazı özel Dil Seçenekleri sayfaları C seçenekleri için ya N-C seçenekler üzerinde değiller. Onları bulmak için Options Summary bakmak daha iyidir
Açmaher şeyifloat
uygulayan 32 bitlik tek duyarlıklı kayan nokta birimi ile İşlemciler üzerinde sadece ilgili olan -Wdouble-promotion
donanım olarak yer alacak, ama yazılım double
taklit eder. double
olarak yapıyor hesaplamalar yazılım emulasyonu ve daha yavaş olur. Bazı gömülü İşlemciler için uygun değil, ama 64-bit için donanım desteği ile modern masaüstü İşlemciler için tamamen alakasız kayan nokta.
Başka uyarı yok genellikle yararlıdır -Wtraditional
, uyarıyor hakkında gayet iyi oluşturulmuş bir kod var farklı bir anlam (ya da çalışmıyor) geleneksel C, örneğin "string " "concatenation"
ISO C işlev tanımları! Gerçekten 30 yaşında Derleyiciler ile uyumluluk önemsiyorsun? Gerçekten int inc(int i) { return i 1; }
yazmak için bir uyarı ister misin ?
-Weffc
yararlı olmak için çok gürültülü olduğunu düşünüyorum, eski ilk baskısı üzerine kuruluEtkili Cve son derece geçerli olan yapıları hakkında uyarır C (ve rehberi kitabı daha sonraki sürümlerde değişti.) Ben olmak istemiyorum uyarıda almadım başlatıldı std::string
üye benim kurucu; bir varsayılan kurucu o yaptığını tam olarak ne istiyorum, neden yazayım m_str()
Ara? -Weffc
uyarılar o yardımcı olur çok zor derleyici için algılamak doğru (vermek yanlış negatif), ve olanları değil yararlı gibi başlatılıyor bütün üyelerine açık bir şekilde, sadece üretmek çok fazla gürültü vererek yanlış pozitif.
Luc Danton neredeyse hiç C kodu için bir anlam ifade eden -Waggregate-return
gereksiz uyarı great example bir sağladı.
yani gerçekten istemiyorsuntümuyarılar, bildiğini sanıyorsun.
Manuel geçmesi, onlar hakkında bilgi edinin, etkinleştirmek isteyebilirsiniz karar, onları deneyin. Derleyici El Kitabı okuyor İyi bir ŞeyTMneyse, kestirmeden ve anlamıyorsun uyarılar sağlayarak özellikle RTFM zorunda kalmamak için iyi bir fikir değildir.
Düzenleme:WONTFIX olarak kapalı olan da 26* *bakın.
Edit 2:yanıt DevSolar şikayetleri makefiles ihtiyacı için kullanmak farklı uyarılara bağlı olarak derleyici sürümü -Wall -Wextra
değil uygun değil o zaman zor kullanmak derleyici özgü ve sürüme özgü CFLAGS:
compiler_name := $(notdir $(CC))
ifeq ($(compiler_name),gcc)
compiler_version := $(basename $(shell $(CC) -dumpversion))
endif
ifeq ($(compile_name),clang)
compiler_version := $(shell $(CC) --version | awk 'NR==1{print $$3}')
endif
# ...
wflags.gcc.base := -Wall -Wextra
wflags.gcc.4.7 := -Wzero-as-null-pointer-constant
wflags.gcc.4.8 := $(wflags.gcc.4.7)
wflags.clang.base := -Wall -Wextra
wflags.clang.3.2 := -Weverything
CFLAGS = $(wflags.$(compiler_name).base) $(wflags.$(compiler_name).$(compiler_version))
Nasıl ELMAH el ile hataları oturum açm...
Nasıl yeni bir pencerede Chrome Gelişt...
Nasıl Google Play Store doğrudan benim...
Şov nasıl yapılır&; Bu sayfanın dışınd...
Nasıl kamera ışığını açmak programlı o...