__finally 구문에 관한 질문입니다.

kuaaan의 이미지

요즘 질문이 많네요. Linux에서만 놀다가 납기도 촉박한 Windows 프로젝트를 맡아갖구...
요즘 심적인 압박이 심합니다. ㅡ.ㅜ

int g_Danger = 0; // 보호해야 할 Global 변수
CRITICAL_SECTION crit;
...
InitializeCriticalSection(&crit);
...
int getDanger()
{
  __try{
    EnterCriticalSection(&crit);
    return g_Danger;
  } __finally {
    LeaveCriticalSection(&crit);
  }
}

(VC6 에서) 위의 코드가 안전한가요?
질문의 포인트는 이겁니다.
__finally 블럭이 실행되는 것이 리턴값이 push된 다음인가요? 이전인가요?

kewlbear의 이미지

이전 질문과 관련이 있는 것 같은데 혹시 소멸자에서 Leave...하는 것이 잘 안되는 것 같아서 SEH로 하시려는 것인가요? 혹시나해서 말씀드리는데 당연히 멀티쓰레드 라이브러리와 링크하시겠죠? 고생이 많으신 것 같네요. 남의 일 같지 않네요 ㅎㅎ;;;

kuaaan의 이미지

음.. 잘은 모르겠지만... C/C++ -> Code Generation에서 Mutithreaded 선택하는거 맞죠? ^^;

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

kewlbear의 이미지

예 맞습니다 ㅎㅎ

superwtk의 이미지

catch 블럭은 아예 없어도 되는겁니까?

http://blog.superwtk.com/