MSDN 라이브러리를 찾아다니다 보면 void*형을 사용하는 파라미터 변수들이 간혹 보입니다. 분명히 변수는 void를 사용할 수 없다고 아셨을 터인데 큰 혼란이 생길 수 있을 것 같아서 이야기하고자 합니다.

void형 파라미터를 사용하는 함수 중 대표적인 것은 아래 두 가지가 있습니다.

    CArchive::Read(void* lpBuf, UINT nMax);

    CFile::Read(void* lpBuf, UINT nMax);

이 중에서 혼란이 생기는 부분은 바로 void* lpBuf입니다. 사실, 파라미터에서 다양한 데이터를 한 변수 안에서 동시다발적으로 처리하는 것은 어렵습니다. 그것대신 오버라이드를 통하여 여러버전의 함수를 만들어야 하는 것이 일반적입니다. 하지만, 이러한 void*형 변수를 활용하면 캐스팅 구문을 통하여 편리하게 이용할 수 있습니다.

즉, void* lpBuf에다가는 아무 형식의 포인터 변수이더라도 자동으로 사용할 수 있도록 해줍니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)