2016-08-29 12 views
6

, Serbest bırakma/hata ayıklama, Rust'ta cfg kullanarak nasıl yapılır? bunu yapmak için yaygın C ısıtma-öncesi işlemci ile

#if defined(NDEBUG) 
    // release build 
#endif 

#if defined(DEBUG) 
    // debug build 
#endif 

Kargo'nun kaba eşdeğer

vardır: serbest bırakılması için

  • cargo build --release. Hata ayıklama için
  • cargo build.

Rust'un #[cfg(...)] özniteliği veya !cfg(...) makrosu nasıl benzer bir şey yapmak için kullanılır?

Rust'un ön işlemcisinin C'ler gibi çalışmadığını anlıyorum. Belgeleri kontrol ettim ve this page lists some attributes. daha genel hata ayıklama dava için kontrol edilmesi kullanıldığında yanıltıcı olabilir

debug_assertions kontrol edilebilir (bu liste kapsamlı olduğunu varsayarak) ancak.

Bu sorunun Kargo ile ilgili olup olmadığından emin değilim.

+1

@Shepmaster Bu, bu soruya benzer (http://stackoverflow.com/questions/30786738/how-to-redefine-a-macro/30787006?s=2%7C2.4527). – antoyo

cevap

9

#[cfg(debug_assertions)]'u kullanabilirsiniz. Bunu this discussion'da doğru bir şekilde adlandırıldı. Şu an için daha uygun yerleşik bir koşul yoktur. reference itibaren

:

debug_assertions - optimizasyonlar olmadan derleme, varsayılan olarak etkindir. Bu, geliştirmede ekstra hata ayıklama kodunu etkinleştirmek için kullanılabilir, ancak üretimde kullanılamaz. Örneğin, standart kitaplığın debug_assert! makrosunun davranışını denetler. here gösterildiği gibi

Alternatif biraz karmaşık bir yolu, #[cfg(feature = "debug")] kullanmak ve sandık için "ayıklama" özelliğini sağlayan bir yapı komut dosyası oluşturmaktır.

İlgili konular