|
variable argument라고 합니다.
아규먼트 갯수가 보통은 정해지는데 printf, fprintf, sprint같은 함수들은 아규먼트 갯수가 정해져 있지 않습니다. 그래서 "..."은 가변인자라는 것을 알려주는 것이구요, 즉 없을수도 있고, 여러개일수도 있고
예제에서 본다면 함수에 타이틀과 format은 기본적으로 주어져야 하겠네요
즉 MessageBoxPrintf("exam", "%s %d %f %d", "abcd", 10, 100.545, a );
"exam" : 은 타이틀에 해당하고
"%s %d %f %d" : 은 포멧에 해당하고
"abcd", 10, 100.545, a : 는 "..."에 해당하는 가변인자들(0 or more)
답변이 됐나 모르겠네요
남병철 님이 쓰신 글 :
: 안녕하십니까~?
: 함수 선언한것을 이것 지것 봤지만 아직 이런식으로 사용해 본적이 없어서 과연 이것이 무슨뜻인지
: 아시는분은 도와주세요.
:
: 기본적인 소스는 아래와 같으며 문제는 '요기'라고 적어놓은 부분을 보시면 함수 선언시에 '...'으로
: 선언되어 있습니다.
: 이것이 정확히 어떤뜻인가요?
: (쓰인 상태로 봐서는 리턴값과 같은 형을 WinMain에서 사용하고 있기는 한데.. 정말 그것인지는
: 잘 모르겠습니다. - 사용가능 소스입니다. -)
:
:
: #include <windows.h>
: #include <tchar.h>
: #include <stdio.h>
: #pragma hdrstop
:
: //---------------------------------------------------------------------------
:
: int MessageBoxPrintf(TCHAR* szCaption, TCHAR* szFormat, ...); <--------------요기*************
:
: //---------------------------------------------------------------------------
: #pragma argsused
: WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
: {
: int cxScreen, cyScreen;
:
: cxScreen = GetSystemMetrics(SM_CXSCREEN);
: cyScreen = GetSystemMetrics(SM_CYSCREEN);
:
: MessageBoxPrintf(TEXT("ScrnSize"),
: TEXT("The screen is %i pixels wide by %i pixels high."),
: cxScreen, cyScreen);
: return 0;
: }
:
: int MessageBoxPrintf(TCHAR* szCaption, TCHAR* szFormat, ...)
: {
: TCHAR szBuffer[1024];
: va_list pArgList;
:
: va_start(pArgList, szFormat);
:
: _vsntprintf(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), szFormat, pArgList);
:
: va_end(pArgList);
:
: return MessageBox(NULL, szBuffer, szCaption, 0);
: }
|