[英]How to turn off exception handling?
在“更有效的C ++(第15號)”一書中,我讀到如果啟用了異常,即使不使用異常,代碼也會變得非常慢。 在我看來,異常使用有限,我試圖避免它們,但這是另一個主題。
我不完全理解他的陳述:
啟用/禁用異常意味着什么?
將標志傳遞給編譯器,該標志器禁用與異常相關的標准一致性,並使其不生成任何異常支持。
如果我使用可能發生異常的DLL會發生什么?
如果某個庫在內部處理異常,則沒有。 如果它讓它轉移到調用者(我從來沒有看到任何庫那樣做,因為ABI問題,但無論如何),你的程序崩潰(在最好的情況下),因為它無法處理它。 如果您的代碼包含DLL的包裝器並將錯誤代碼轉換為異常(常見發生),那么它就像您在代碼中使用異常一樣。
代碼整體變慢還是只是程序進/出的部分try / catch塊變慢? 據作者說,兩者都是真的。
請注意,您引用的書已經過時了。 編譯器正在發展。 現代編譯器使用零成本例外,如果不拋出異常,則不會產生性能成本。 異常處理確實使可執行文件更大,因為它應該生成處理異常所需的所有數據和代碼,但它不應該在非異常路徑上使它變慢。
如何編譯無例外? 即使我有try / catch塊,我可以這樣做嗎?
您以特定於編譯器的方式執行此操作。 請參閱編譯器文檔。 通常這樣做會使編譯器拒絕包含任何與異常相關的工具的代碼,例如指出try
作為無法識別的標識符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.