C++ builder Rio 10.3.3 버젼 사용중에 생긴 문제 입니다.
프로그램 작성중에 갑자기 처음보는 에러가 (cannot compile this 'this' captured by SEH yet) 나왔습니다.
해당 에러가 난 곳에서 아무리 찾아봐도 구문상 문제가 없는데 오류가 사라지지 않아서 인터넷을 찾아 보았습니다.
찾아보니 CLang의 32bit 컴파일러 오류현상 이라고 나오고 엠바에서 이미 10.3.1 버젼에서 해당 오류를
수정했다고 나오네요..
그런데 난 10.3.3 버젼을 사용하고 있는데 왜?????
좀더 내용을 살펴보니 try __finally 문의 사용과 관련이 있다고 나와서 try __finally 을 빼버릴까 하다고 오기로 오류를 잡아 보기로 맘 먹고 이것 저것 수정해 보았습니다.
그러던 중 아래의 소스 구조상에서 __finally 구문안에 for 반복문이 있었습니다.
이것을 반복문을 사용하지 않고 그냥 순차적으로 실행하도록 고쳤더니 해당 오류 현상이 사라졌습니다.
그래서 혹시 이것이 __finally 구문안에 for 문이 있으면 늘 생기는 오류인가 테스트 해 보았는데 그게 꼭 원인은 아니더군요..
패치를 하면서 해당오류를 수정했다고 하던데 도대체 뭘 고친건지 모르겠습니다. 하여간 원인도 모르는 오류 수정기였습니다.
try
{
}
__finally
{
for(int loop=0 ; loop<2 ; loop ++)
{
}
}
|
엠바 C++ 컴파일러에서 __finally는...
class 객체를 수동으로 힙에 생성하고 해제해야만 하는 델파이 파스칼 컴파일러의 한계로 인해
객제의 안전한 해제를 위해선 try... finally 블럭이 필요할 수 밖에 없는 VCL의 구조적 한계를
그대로 답습한 산물에 불과함.