在C++Bulider XE3 64位編譯后, try __finally陳述句(有return)不會執行到__finally陳述句(ShowMessage不會呼叫)
try
{
int xxx=0;
return;///
}
__finally
{
ShowMessage(_T("__finally"));
}
uj5u.com熱心網友回復:
檢查編譯例外支持uj5u.com熱心網友回復:
CB的例外會導致函式呼叫堆疊的堆疊幀調整,感覺你那個return陳述句用法不妥,試試調整一下陳述句順序結構。uj5u.com熱心網友回復:
return直接彈出堆疊幀,可能會破壞例外處理系統的堆疊幀關系。
uj5u.com熱心網友回復:
10.2.1實測是可以的,不管用try __finally還是__try __finallyuj5u.com熱心網友回復:
try __finally , XE3 32位可以,64位就有問題uj5u.com熱心網友回復:
編譯器不同,處理方式不同?uj5u.com熱心網友回復:
是不是 XE3的bug?
uj5u.com熱心網友回復:
不知道,XE3是CB換用基于clang/llvm修改的編譯器的第一個版本,有些BUGs也很正常轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30817.html
標籤:基礎類
上一篇:C++中的
下一篇:php單檔案上傳和多檔案上傳
