구조체 반환 최적화
죠우저프님 작성
typedef struct _RECT
{
int left, top, right, bottom;
} RECT;
RECT Func()
{
RECT R;
R.left=1;
R.top=2;
R.right=3;
R.bottom=4;
return R;
//함수의 리턴은 eax 레지스터(실수의 경우 MMX0)를 이용하는데 어떻게 구조체를 리턴하는 것일까?
//로컬변수 R은 함수 종료시 없어지는데 리턴하는 것이 의미가 있을까?
}
int main()
{
RECT R;
R=Func();
printf("RECT: %d,%d,%d,%d\n", R.left, R.top, R.right, R.bottom);
return 0;
}
컴파일러가 변형
위의 코드를 컴파일하면 컴파일러가 코드를 이렇게 변형하여 컴파일합니다.
void Func(RECT *lpRet) //RECT Func() 를 변형함
{
RECT R;
R.left=1;
R.top=2;
R.right=3;
R.bottom=4;
*lpRet=R; //return R; 를 변형함
}
int main()
{
RECT R;
Func(&R); //R=Func(); 를 변형함
printf("RECT: %d,%d,%d,%d\n", R.left, R.top, R.right, R.bottom);
return 0;
}