자유
예외와 Goto 와 do-while 문...
8
1
2020-09-10 13:31:11
수정일 : 2020-09-10 13:57:11
1.♡.83.211
안녕하세요 헬마입니다.
다들 즐거운 C/C++ 코딩을 하시고 계신가요? 제2외국어는 C++ 이다라고 말할 수 있을정도가 되고싶지만 참 쉽지 않네요.
언어를 배우다보면 여러가지 금기사항이랄까 암묵적인 룰이랄까 이런게 있는데, 그 중에 하나가 Goto 문을 사용하지 말자는 겁니다.
하지만, 역시나 획득한 자원을 해제하는 분야에서는 여전히 Goto 문 또는 예외가 애용되고 있습니다. 하지만, 또 별난 C/C++ 의 쓸데없는 성능광적인 측면은 예외는 느려 라면서 안 쓰게 만들더군요.
그러다, 한번은 MS 에서 작성한 드라이버 샘플코드에서 발견한 것인데 do-while 문을 이용해서 이러한 작업을 처리하더라구요.
요즘 매우 애용하고 있는 do-while 사용스타일입니다. ㅎㅎ 덕분에 사내에서 수많은 코드가 이걸로 바뀌고 있네요 ㅎㅎ
다같이 do-while 문의 장점으로 숑~~
SIGNATURE
"붓이 칼보다 강하다고 말하는 문필가는 많습니다. 하지만 그들 중 적지 않은 이들이 붓으로 이루어진 범죄가 칼로 이루어진 범죄보다 더 큰 처벌을 받아야 한다고 말하면 억울해 합니다. 바르지 못한 일입니다. 붓이 정녕 칼보다 강하다면, 그 책임 또한 더 무거워야 합니다. 등기부 위조는 붓으로 이루어지는 반역이라고 할 수 있으며, 따라서 나는 창검으로 이루어지는 반역에 비해 더 큰 벌을 내리지는 못할 망정 최소한 같은 처벌을 받아야 한다고 생각합니다. 그리고 그것을 붓에 보내는 칼의 경의라고 생각할 것입니다"
"아니오, 그들이 약한 척 아픈 척 죽은 척 한다고 해서 칼을 칼집에 꽂아넣는 것은 어리석은 짓 입니다. 저는 그런 속임수에 너무 많이 당했습니다"
"아에드 인 마이오렘 델 글로인"
서명 더 보기
서명 가리기
goto 를 쓰는게 아닌...ㅎㅎ
생각지도 못했던 방법이네요
역시 MS 놈들이 머리가 좋구나 이러면서 ㅎㅎ 아주 애용하고 있습니다.
그외에 C++ 에 아쉬운 기능이라면 자바처럼 continue break 에 라벨 이름을 지정할 수 있으면 참 좋겠다 싶어요
이제 머리가 굳었다고, 함수 하나가 2페이지 이상가면 위에 내용이 기억이 안나네요
뭐 윈도라면 구조적 예외처리.기능을 이용해서 leave 쓰면 바로 finally 구문으로 넘어가니까 이건 편하죠 이것도 제약사항이.크지만... 덕분에 드라이버에서만 씁니다 ㅎㅎ
제가 보기엔 그냥 귀찮아서 macro expansion을 그대로 둔거 같은 느낌적 느낌이 드는데요.. 그냥 귀찮아서일듯...??
저는 좀 다른 의견으로 do { break }while(0) 은 goto 랑 같은걸로 칩니다.
가독성, 성능면에서 다를게 없어 보여요.
제가 어릴 때 C/C++ 를 처음 익힐 때 부터 귀에 딱지가 앉도록 들은 것 중에 하나가 "예외 쓰지마라", "예외는 느리다" 였으니까요.
게다가, 한 때 mingw-w64 로 컴파일러를 변경하려고 하면서 32비트 구현에는 SEH 가 지원되지 않아, 예외를 쓰면 성능감소가 매우 심각한 것을 깨닫고 더더욱 안 쓰게되어버렸죠