E D R , A S I H C RSS

Cpp에서의가변인자

가변 인자란?

C의 io 라이브러리인 printf에 쓰이는 그것이다. 또는 MFC - CStringCString::Format이나 CString::AppendFormat에 쓰이는 그것이기도 하다. 함수 쓸때 ...이라고 나오는 인자를 가변인자라고 한다. 이렇게 하면 인자를 여러개를 받을 수 있다.

가변 인자 만들어서 쓰기

~cpp 
void Foo(LPCTSTR pFmt, ...)
{
	int		len;
	va_list		args;
	TCHAR		*pbuf;
	CString		str;

	va_start(args, pFmt);
	len  = _vsctprintf(pFmt, args) + 1;
	pbuf = new TCHAR[len];
	_vstprintf(pbuf, pFmt, args);

	AfxMessageBox(str);

	SAFEDELETE(pbuf);
}
이렇게 하면 된다. 뭐가 뭔지는.. MSDN을 찾아보도록 하자. 몰라도 충분히 쓸 수 있다.

유용하게 쓰이는 곳

인수AfxMessageBox류를 띄울때 참 유용하게 쓰고 있다. 가변인자를 몰랐을때에는
~cpp 
CString str;
str.Format(_T("a : %d, b : %d, c: %d"), a, b, c);
AfxMessageBox(str);
이랬지만,
가변인자를 알고 난 이후에는 이렇게 쓸수 있다.
~cpp 
VAMessageBox(_T("a : %d, b : %d, c: %d"), a, b, c);	// variant argument(?)의 약자같다. 

와우 난 저런 메시지 박스 함수가 있는지 몰랐는데~ - 임인택
저런거 없다.--; 그냥 만든거야; --인수


Java 1.5 언어 스펙에서 가변인자 관련 문법이 추가되었다. 자바에 곧 printf 가 추가될 것이다.; --1002

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.2936 sec