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

Cpp에서의가변인자

From ZeroWiki
Revision as of 05:23, 7 February 2021 by imported>Unknown
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

가변 인자란?

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]


프로그래밍분류