2012-01-07 20 views
5

Bir hatayı derleme zamanında bir hatayla görüntüleyen this question'a bir yanıt yazdıktan sonra, bunun yerine bir uyarı almanın mümkün olup olmadığını ve derlemeyi bitirip bitiremeyeceğini merak ettim (soruda belirtildiği gibi).Farklı derleyiciler arasında sürekli olarak tetiklenecek uyarılar var mı?

Tanılama genel olarak derleyiciye bağımlı olsa da, bazı kodlarda bir hatanın tetikleneceği (örneğin, var olmayan bir üyeye erişme veya tamamlanmamış türde bir nesneyi başlatmaya çalışmak gibi) oldukça açıktır.

Aynı şey uyarılar için de söylenemez, çünkü bunlar derleyiciler arasında büyük farklılıklar göstermektedir. GCC ile tetiklenen uyarıların da Clang ile tetikleneceğini varsaymak makul olsa da, Visual C++ için aynı şey söylenemez.

Soru:
Belirtilen üç derleyicide sürekli olarak hangi uyarılar tetiklenir? GCC & Clang üzerinde

VC üzerinde /W3 ++ ve -Wall varsayılabilir. Bu sadece o soru için yararlıdır, ancak lutfen kullanıcı tanımlı mesajlar için bir uyarı tetikleme için yararlı olabileceğini


Not.

+1

Neden GCC/Clang'da '-Wall' kullanırken MSVC'de'/W3' kullanıyorsunuz? MSVC, ek uyarı seviyeleri olarak '/ W4' ve'/Wall'ı destekler. –

+0

@Cody: Derleyicileri için "varsayılan" kurulum olarak düşünüyorum. Uyarının görüntülenmesi için uyarı seviyesini değiştirmek zorunda kalmak istemiyorum. '/ W3', Visual Studio'daki gerçek varsayılan değerdir ve' -Wall' da varsayılan olarak görülebilir. – Xeo

cevap

2

Bu MSVC, GCC ve Clang çalışması gerekir: hala

#pragma message("hello world") 

çok faydalı değil, ama çalışır. Çok

Bu aldı uyarılar:

  • kullanılmayan değişken
  • kullanılmayan etiket
  • büyük değerler, örneğin (1 < < 128)
+0

Bununla ilgili herhangi bir şablon içeriği gösterilemez. : (Ve bu gerçekten bir uyarı olarak sayılmaz, değil mi? – Xeo

+0

@Xeo Evet, işe yarayacak olmasına rağmen - uyarılar çok fazla değil. – Pubby

İlgili konular