2012-01-10 12 views
32

Kimsede QT'de yalnızca hata ayıklama kodu oluşturmak için resmi olarak desteklenen bir yol biliyor mu? Örneğin: Q_ASSERT gibi ama daha karmaşık testler için.Qt (garantili) hata ayıklama tanımını sunuyor mu?

Qt çerçevesinin bir hata ayıklama makrosu tanımlamayı garanti ettiğini belirten herhangi bir belge bulamıyorum. Eğer yoksa, bu özellik projesini uygulamak için resmi olmayan yol ne olurdu?

cevap

39

Qt, sürüm oluşturmak için QT_NO_DEBUG ürününü tanımlar. Aksi halde QT_DEBUG tanımlanmıştır.

Elbette, .pro dosyalarınızda herhangi bir DEFINES belirtmekte ve bunları debug veya release için kapsamaktadır.

debug { 
    DEFINES += MYPREFIX_DEBUG 
} 
release { 
    DEFINES += MYPREFIX_RELEASE 
} 

Sonra Qt iç tanımına bağlıdır olmaz:

+0

Eğer 'QT_NO_DEBUG' resmen Qt çerçevesi dışında kullanılmak üzere desteklendiğini herhangi bir kanıt biliyor musunuz? –

+1

Hayır, sadece kaynağı okuyor. Yayınlanmış API başlıklarındaki tanımların çok iyi bir neden olmadan değiştirilmesinin mümkün olmamasına rağmen. – laalto

13

alternatif gibi proje dosyası şey yazmaktır. çek ayıklama modu için

+0

Mantıksız bir öneri değil ama ** özellikle ek tanımlardan kaçınmak için ** araştırıyordum. –

+0

Neden? Ek tanımda ne gibi dezavantajlar görüyorsunuz? – eSKon

4

:

#ifdef QT_DEBUG 
    //Some codes 
#endif 

onay bırakma modu için:

#ifndef QT_DEBUG //<== Please note... if not defined 
    //Some codes 
#endif 
İlgili konular