2017-04-11 7 views
0

デバッグビルドでは、デバッグを容易にするためにほとんどすべてのOpenGL呼び出し後にOpenGLエラーをチェックしたいと考えています。これはコストのかかる操作なので、リリースビルドではやりたくありません。今のような機能を使用しています:リリースビルドで最適化されたデバッグ用のRust関数またはマクロを作成するにはどうすればよいですか?

pub fn debug_panic_on_errors() { 
    if cfg!(debug_assertions) { 
     get_errors().unwrap(); 
    } 
} 

この方法は常に完全に最適化されていると仮定して正しいですか?より良い、より将来的な方法がありますか?

+0

または既にランタイムとコンパイル時のチェックを使用して[既存のOpenGLの箱](https://crates.io/crates/glium)を使用することができます。 – Shepmaster

+0

文字通り、2時間前に 'debug'マクロを提案しました:https://github.com/rust-lang/rust/issues/41223。その機能を使用する他の人がいることを示すことは良いことです。 – joshlf

答えて

2

リリースモードでは、ファンクションはif false { … }に拡張されます。これは、最適化するのが非常に簡単なので、そのままそのまま使用できます。


結果は、我々は、オプティマイザに依存しないことを確認するために、解析時に選択されるように、あなたは

#[cfg(debug_assertions)] 
pub fn debug_panic_on_errors() { 
    get_errors().unwrap(); 
} 

#[cfg(not(debug_assertions))] 
pub fn debug_panic_on_errors() { 
} 

よう#[cfg]二つの機能偏執的な可能性がされている場合。しかし、私は実際にこれをお勧めしません...

関連する問題