C++ 함수의 매개변수 평가 규칙
글쓴이: ikpil / 작성시간: 목, 2008/05/15 - 8:19오후
단축 평가는 연산자의 왼쪽에서 오른쪽으로 표현식 평가하고,
함수 매개변수 평가는 알수가 없다고 More Effectiv C++ 에서 설명 하는데요.
일전에 WINAPI 공부를 하던 중에 매개변수 호출 규약이 오른쪽에서 왼쪽으로 호출된다는것을 알았습니다.
이 규약은 윈도우만 .. 그런건가요? WINAPI #define 상수만 봐도 __stdcall 이라고 명시 하던데..
질문
1. 윈도우만 매개변수 호출 규약이 오른쪽에서 왼쪽인가요?
2. 호출 규약과 매개변수 평가 규칙은 다른 차원인가요? ;;
Forums:
__stdcall이란 것
__stdcall 이란 것 자체가 WinAPI를 위한 호출 규약입니다.. __stdcall 에 의존해서 순서에 따라 다른 결과가 나올수 있는 코드를 짠다면 이식성이 없는 코드가 되는 셈입니다. 뭐 WinAPI자체가 윈도우용이니까 애시당초 이식성은 필요 없을지도 모르겠지만요...
네.
그렇군요. 결과적으론 호출규약이 있어도 "단축 평가"는 함수 호출에서 물건너 갔다고 이해가 됩니다.
함수 호출 자체를 중간에 멈칠수 없으니까요.
그렇게 생각한다면 단축 평가는 효율적인 측면에서 보면,
1. 두개의 렉트 충돌을 평가한다든지,
2. 여러겹의 데이터를 평가 한다든지
일 경우, 평가가 가장 빨리 끝날것 같은 순으로 왼쪽에 정렬해 두면, 효율적으로 더 좋다는 거였다고 이해가 됩니다.
언제나 답변 달아 주시는 xylosper님 감사합니다!
http://www.ikpil.com
댓글 달기