이렇게 해두고 실제 expression상에서는 ; 을 붙이지
않는것이 더 편할것 같다는 생각이 드네요.
아마 어디엔 ;을 붙이고..어디엔 안붙이고 하는 일관성 문제때문에
이렇게 하는걸 프로그래머들이 기피하는것 같지만...
또 다른 이유로는 사용하는 사람이 매크로인지 실제 함수인지 구분할
필요가 없도록 만들어 주는 것입니다. 실제 함수를 제공하면서 동시에
성능을 위해 masking macro 를 제공하는 경우를 생각해 보시기 바랍니다.
만사마 wrote:
저렇게 하면 적어도 do while 문에서의 탈출조건을
한번 체크하는 시간은 벌 수 있기 때문에 성능상 아주 약간은
더 좋을것 같습니다.
assert() 매크로도 쓰지 말자는 얘기와 같습니다. 무의미한 코드를
생성하는 컴파일러가 잘못된 컴파일러는 아닙니다만, 언어마다 일반적인
프로그래밍 관례가 있고 아무리 최적화를 못하는 컴파일러라 해도 그와
같은 프로그래밍 관례를 수용하는 일은 크게 어렵지 않은 일입니다.
Anonymous wrote:
if(cond) A(); 일 경우
if(cond){} ; 이 되고 끝의 ;는 널스테이트먼트가 되지 않나요?
문제는...
if (cond) A();
else B();
이는 parse error 로 떨어집니다. 이 내용도 위에 언급된 기존 논의
중에 나왔던 것으로 기억합니다.
[code:1]if (1) last=__switc
이 두개의 차이를 생각해 보시길...
이 질문은... FAQ급이군요 ㅋ
아마 " define and while " 정도로 검색 하시면 많은 글들이 있을듯...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
kldp에서만도 골백번도 더 본 질문이군요.http://bbs.k
kldp에서만도 골백번도 더 본 질문이군요.
http://bbs.kldp.org/viewtopic.php?t=45045
http://bbs.kldp.org/viewtopic.php?t=54712
[quote="Anonymous"]kldp에서만도 골백번도 더 본 질문이
http://www.google.co.kr/search?sourceid=navclient&hl=ko&ie=UTF-8&rls=GGLD,GGLD:2005-22,GGLD:ko&q=site:bbs%2Ekldp%2Eorg+do+while%280%29
앗~
먼저 검색해 보는 걸 잠시 잊었습니다...ㅡ,.ㅡ
우리 모두 검색하는 습관을....안하면 돌 날라 옵니다....ㅎㅎ
암튼 감사합니다..
One must, In fact, Love your pursuit
My home is below...Well, just go own your gait!
음.
확 FAQ를 하나 만들면 어떨까요;; ㅎㅎ
그냥 #define A() {...}이렇게 해두고 실제
그냥
#define A() {...}
이렇게 해두고 실제 expression상에서는 ; 을 붙이지
않는것이 더 편할것 같다는 생각이 드네요.
아마 어디엔 ;을 붙이고..어디엔 안붙이고 하는 일관성 문제때문에
이렇게 하는걸 프로그래머들이 기피하는것 같지만...
저렇게 하면 적어도 do while 문에서의 탈출조건을
한번 체크하는 시간은 벌 수 있기 때문에 성능상 아주 약간은
더 좋을것 같습니다.
(특히 이 구문이 반복적으로 매우 자주 호출된다면 말이죠)
한번만 pass하는 do while구문을 컴파일러가 최적화시켜
일반 블록문으로 대치시키는 경우도 생각해 볼 수 있겠지만..
그 경우라도 괜히 쓸데없는 오버헤드를 컴파일러에게
전가하는것 같아서 찜찜할거 같습니다.
[quote="만사마"]그냥 #define A() {...}
컴파일러에게 전가하는 오버헤드보다 사람에게 이건 ; 를 붙이지 말아야 한다고 기억시키는 오버헤드가 훨씬 크지 않을까 싶습니다.
결국 중요한건 사람을 편하게 하는거지 컴파일러를 편하게 하는건 아니니까요.
즐겁게 살아 볼까나~*
[quote="freezm7"][quote="만사마"]그냥 #de
if(cond) A(); 일 경우
if(cond){} ; 이 되고 끝의 ;는 널스테이트먼트가 되지 않나요?
[quote]이렇게 해두고 실제 expression상에서는 ; 을 붙
실제 프로그래밍 짤때 직접 그렇게 해보십시오. 어디 편한가.
컴파일러가 어지간히 바보가 아닌 이상 최적화를 합니다.
눈꼽만한 컴파일 시간 증가를 우려하는 것보단 코드의 가독성 저하로 인한 손해를 염려하는 편이 좋습니다.
[quote="만사마"]그냥 #define A() {...}
또 다른 이유로는 사용하는 사람이 매크로인지 실제 함수인지 구분할
필요가 없도록 만들어 주는 것입니다. 실제 함수를 제공하면서 동시에
성능을 위해 masking macro 를 제공하는 경우를 생각해 보시기 바랍니다.
assert() 매크로도 쓰지 말자는 얘기와 같습니다. 무의미한 코드를
생성하는 컴파일러가 잘못된 컴파일러는 아닙니다만, 언어마다 일반적인
프로그래밍 관례가 있고 아무리 최적화를 못하는 컴파일러라 해도 그와
같은 프로그래밍 관례를 수용하는 일은 크게 어렵지 않은 일입니다.
문제는...
이는 parse error 로 떨어집니다. 이 내용도 위에 언급된 기존 논의
중에 나왔던 것으로 기억합니다.
--
Jun, Woong (woong at gmail.com)
http://www.woong.org
댓글 달기