No older revisions available
No older revisions available
가변 인자란? ¶
C의 io 라이브러리인 printf에 쓰이는 그것이다. 또는 MFC -
CString의
CString::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