2017-04-11 43 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

我從字面上提出了一個問題,兩小時前提出了一個調試宏: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]兩個功能,以確保我們不靠優化。但我不真的推薦這...

相關問題