2011-12-14 16 views
8

Varolan bir kod tabanında -Werror bayrağını tanıtmaya çalışıyorum. Karşılaştığım sorunlardan biri, bazı iletilerde #warning'un bilgi iletilerini görüntülemede kullanılmasıdır. Bunlar bir hata olarak ele alınmamalıdır.`# warning` iletilerinin bir hata olarak ele alınmasını nasıl engelleyebiliriz?

Bunun yerine bir çözüm #pragma message kullanmak yerine, ancak bu gcc'nin eski sürümleri tarafından desteklenmiyor gibi görünüyor. (Yapı sunucularımız gcc 4.1.2 kullanıyor).

Bunu düzeltmeme yardım eden var mı?

+5

Eh, # uyarı 'kötüye kullanıyorsunuz. Bundan kurtul, problem çözüldü. –

+4

@CatPlusPlus: Bir alternatif göndermeye ne dersiniz? – UncleBens

+1

@UncleBens: "Çıkar" dışındaki alternatifleri önermek için orada ne yaptığını görmem gerekiyor. Bir yapı sistemi seviyesinde bir şeyle değiştirilebiliyor olabilir. –

cevap

4

gcc-4.6 ve üzeri sürümlerde -Wno-error=cpp'u kullanabilirsiniz. En azından Aslan ile bırakılan argoda ve daha sonra -Wno-error=#warnings'u kullanabilirsiniz. Ama inşa sunucularınız eski bir gcc kullanıyorlarsa, muhtemelen şansınız yok demektir. Size uyarıyı kontrol eden bir uyarı bayrağı söyler

test.cc:1:2: warning: #warning hello [-Wcpp] 

: Genel olarak

, uyarılar gibi çıkış gösteriyor olması -fdiagnostics-show-seçeneği geçmektedir. Gcc> = 4.6 ve clang'da, bu varsayılan değerdir, bu yüzden geçmek artık çok yararlı olmayabilir. #warning için -Werror ait

1

Yerel devre dışı etki aşağıdaki gibi:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

bu yaklaşımla yararı hala başka yerde kodunda #warning hatayı neden olabilir.

+2

yukarıdaki gcc 4.1.2 ile çalışmak için görünmüyor - Ben olsun "uyarı: tanı #pragma GCC görmezden" ve #warning çizgi bir hata olarak alınır (-Werror kullanmamak tanımlandığı gibidir) –

İlgili konular