게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
여러분은 goto문 쓰시나요?
게시물ID : programmer_2032짧은주소 복사하기
작성자 : ㄱㅡ
추천 : 0
조회수 : 1488회
댓글수 : 11개
등록시간 : 2014/03/22 01:17:41
전 씁니다만.... 다들 극도로 꺼려하시더라구요...
 
일단 제가 쓰는 용도는 실패시 처리를 위함입니다.  try catch써도 될거 같긴하지만... 일단 제일 편해서 ^^;;
 
사실 이런 용도를 본게 어디서 봤더라... 하도 오래전에 본거라 기억도 가물가물...
 
mfc 코드 추적하다 봤던가... 옛날 오거 엔진 만지다봤던가... DirectX 셈플소스였던가.... 암튼 다른소스 디버깅하다 본건데요
 
예를들어
 
int Init()
{
     int step=0;
     classA *a=NULL,*b=NULL,*c=NULL;
 
     a=new classA;
     if(a->init()==false)
           goto initFailed;
     step=1;
 
     b=new classA;
     if(b->init()==false)
           goto initFailed;
     step=2;
 
     c=new classA;
     if(c->init()==false)           
           goto initFailed;
     return 3;
 
initFailed:
     SAFE_DELETE(a);
     SAFE_DELETE(b);
     SAFE_DELETE(c);
     return step;
}
 
위와 같은 소스가 있을경우 a가 init 실패하면 걍 delete a하고 return 하면 되지만...
 
b나 c쯤가면 일일이 a와 b까지 delete해줘야하고..  여기선 그나마 delete만 하면 끝이지만
 
실제 사용되는 소스들보면 좀만 귀찮게되면 일일이 해제 해줄 부분도 많고...
 
실수로 까먹으면 아주 주옥되는경우도 있고 ㅎㅎㅎㅎ
 
위소스처럼 initFailed부분에 모든 경우의 해제를 다몰아둔다음 goto하면 아주 깔끔하게 해제됩니다.
 
조아요~ ㅎㅎ
 
뭐 try catch와 비슷하긴하네요  throw대신 goto
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호