簡體   English   中英

使用結構化異常處理(SEH)的后果?

[英]Consequences of using Structured Exception Handling (SEH)?

我看到Doug Harrison已經很好地陳述了使用(即捕獲)結構化異常的“錯誤”(參見問題#3 )。 但還有其他后果嗎? 例如,如果我用/ eha編譯了幾個項目,並與用/ ehs編譯的其他項目混合,會發生什么? 當庫與彼此鏈接(編譯時或運行時)時是否存在問題?

但這只是一個例子。 還有什么其他問題?

/ EHa禁用優化。 如果/ EH生效,編譯器可以省略異常過濾器,如果它可以確保try {}中包含的代碼不會拋出任何C ++異常。 這是x86和x64上的小空間優化,x86上的非常小的時間優化。 問題是,如果捕獲非C ++異常,則需要這些過濾器。 結果是,在沒有調用C ++對象的析構函數的情況下捕獲此類異常時,堆棧將展開。 不好,/ EHa避免它。

混合不會導致鏈接器問題。 它導致上述問題。

是的,/ EHa也讓catch(...)做了一件非常愚蠢的事情,它確實抓住了一切。 不久之前,這艘沉船事故航行了,Pokemon C ++異常處理也是一個壞主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM