簡體   English   中英

C ++異常會因內聯而停止運行嗎?

[英]Would C++ exception stops function from being inlined?

假設我有一個非常簡單的函數,我希望編譯器能夠內聯它。 但是我可能需要在看到一些無效輸入時拋出異常,是否會阻止編譯器內聯函數?

編譯器可以出於任何原因拒絕內聯。 gcc列出了為什么它可能沒有內聯函數的原因 ,但異常拋出不在其中。 此外,選項-Winline將導致編譯器發出警告,如果它無法內聯您標記為內聯的函數。 你可以嘗試一下,看看你是否正在采取任何措施來阻止內聯。

編譯器內聯拋出的函數是完全合理且有效的。

我剛剛使用MSVC版本19遇到這種情況。在編譯x86時,拋出異常的函數不會被內聯。 如果我用exit(1)替換throw或者如果我為x86-64編譯,它會被內聯得很好。

暫無
暫無

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

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