Home > Back-end >  64 compiled in C Bulider XE3, try __finally statements (return) won't perform to __finally
64 compiled in C Bulider XE3, try __finally statements (return) won't perform to __finally

Time:11-12


In c + + Bulider XE3 64 compiled, try __finally statements (return) will not perform to __finally statement ShowMessage (not call)
Try
{
Int XXX=0;
return;///
}
__finally
{

ShowMessage (_T (" __finally "));
}

CodePudding user response:

Check abnormal compilation support

CodePudding user response:

CB can lead the function call stack stack frame adjustment, feel the return statement you use wrong, try to adjust the sentence order structure,

CodePudding user response:

refer to the second floor ooolinux response:
CB can lead the function call stack stack frame adjustment, feel the return statement you use wrong, try to adjust the statement sequence structure,


Return pop-up stack frame directly, could damage the exception handling system of stack frames,

CodePudding user response:

10.2.1 measurement is ok, no matter in the try __finally or __try __finally

CodePudding user response:

Can try __finally, XE3 32-bit and 64 - bit have a problem

CodePudding user response:

The compiler is different, deal with in a different way?

CodePudding user response:


references 4 floor early play play nuclear response:
10.2.1 measurement is ok, no matter in the try __finally or __try __finally

XE3 bug?

CodePudding user response:

I don't know, is XE3 CB in with a clang/LLVM modify the first version of the compiler, some BUGs are normal
  • Related