Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Cpp에서의가변인자

From ZeroWiki

가변 인자란?

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

가변 인자 만들어서 쓰기

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류를 띄울때 참 유용하게 쓰고 있다. 가변인자를 몰랐을때에는

CString str;
str.Format(_T("a : %d, b : %d, c: %d"), a, b, c);
AfxMessageBox(str);

이랬지만, 가변인자를 알고 난 이후에는 이렇게 쓸수 있다.

VAMessageBox(_T("a : %d, b : %d, c: %d"), a, b, c);	// variant argument(?)의 약자같다. 

와우 난 저런 메시지 박스 함수가 있는지 몰랐는데~ - 임인택

저런거 없다.--; 그냥 만든거야; --인수

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


프로그래밍분류