2013-08-06 12 views
7

Sadece GCC'deki en yüksek uyarı düzeyini etkinleştiren bir kitap okuyorum. Sadece dokümanı çevrimiçi kontrol ediyorum ve çok fazla parametre bulunduğunu gördüm. En yüksek uyarı seviyesini etkinleştirmek istiyorum, hangi parametreyi kullanmalıyım?GCC derleyicisindeki en yüksek uyarı düzeyi nasıl etkinleştirilir (Yükseltme yoğun olarak kullanılır)

Ve Boost'u projemizde yoğun olarak kullanıyoruz.

+5

'-Wall -Wextra -pedantik hatalar, ihtiyacınız olan her şey değilse iyi bir başlangıçtır. – chris

+0

sadece elma üzerinde clang kullanan herkes için -Heverything' – aaronman

+0

@chris var Ancak, yeni GCC sürümleri (benim için 4.8.1) ile, özellikle tarafından oluşturulan uyarıları özellikle bastırmazsanız, Boost'u bu bayrak kombinasyonlarıyla kullanamazsınız. Artırma kodu. -Kötü-yerel-typedefs kimse? –

cevap

10

aykırı kullanabilirsiniz sanırım.

Diğerleri tarafından belirtildiği gibi, zaten birçok uyarıyı etkinleştiren -Wall varsayılan değerdir. -pedantic seçeneği birkaç tane daha ekler. Ve -Wextra yine başka bir grup ...

Ancak, birçok uyarıyı gerçekten yakalamak için, çok sayıda el ile eklemelisiniz.

Orada kullanmak ister setidir birileri bazı olanların çelişkili olduğunu söyledi rağmen, benim geliştirme çalışmaları için oldukça iyi o listeyi bulmak:

-Werror -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wundef -Wno-unused -Wno-variadic-macros -Wno-parentheses -fdiagnostics-show-option

Not I faydalanmak -Werror, aksi halde uyarı alırsınız ve onları görmezden gelebilirsiniz. -Werror ile, hiçbir şey görmezden gelmek yok! Bozuk kod yazın ve yazılımınızın beklendiği gibi çalışması daha olasıdır.

+0

Boost kullanımını düşündünüz mü? Bu sorun çıkarır mı? Şüphe etmiyorum, sadece bilmiyorum. Teşekkürler – Yang

+0

Yükseltme ile, kodda onları kapatmak zorunda kalmamak için birkaç seçeneği kaldırmanız gerekebilir. Çalıştığım bir şirketin yaptığı bir şey, sorun yaratan dosyalar için bir dizi sarmalayıcı oluşturmaktır. Onlarda, aksi halde oluşturulacak uyarıları kapatmak için #pragma kullanabilirsiniz. Örneğin: #pragma GCC teşhisi göz ardı edildi "-Wold-style-cast" 'C-tipi bir cast kullanan bir makro kullanırsanız yardımcı olur. –

+2

'-Wconversion', düşünebileceğiniz başka bir şeydir – JDiMatteo

-1

Ben gcc sadece kapatmak veya seçeneklerin bir kümesi vardır, size 4 düzeyi olan cl -Wall Düğmeyi

İlgili konular