728x90
이번 프로젝트 중에 LOGFONT를 쓸 일이 있어서 LOGFONTA로 작업을 했다가 LOGFONTW로 변경해야 하는 시점이 왔다.
그래서 SetTitle(, , , , LOGFONTA) -> SetTitle(, , , , LOGFONTW) 로 변경하는 작업을 진행하는 도중 이상한 현상을 발견하였다.
int main()
{
LOGFONTW lf; <- 정상적인 값 세팅.
SetTitle(, , , , lf );
}
void SetTitle(, , , , LOGFONTW in_lf)
{
in_lf; <- 이 시점에서 봤을 때 값은 쓰레기 값이었다.
}
그래서 Packing 크기와 구조체의 크기 등등을 비교해도 다 같은데 왜 값이 서로 다른지에 대해 찾아보던 중
메모리 값을 비교해보니 lf의 주소값이 in_lf의 첫번째 멤버변수에 들어가 있는 것을 확인했다.
그래서 이런저런 테스트를 더 해보려고했지만, 개발 일정이 늦은 상태이기 때문에 다음에 더 테스트를 더 해봐야 할듯하다. ㅎㅎ
결론은
void SetTitle(, , , , LOGFONTW in_lf) -> void SetTitle(, , , , const LOGFONTW& in_lf) 로 바꾸면 정상적인 값으로 들어간다.
728x90