Visual C++에서 getopt() 함수 흉내내기
절름발이 프로그래머/C언어, C++ 과 Visual C++ / 2009. 10. 28. 11:37
Visual C++에서는 UNIX에서 제공하는 getopt() 함수가 없습니다.
그런 경우, 간단하게 인자 처리를 하고 싶으면 다음과 같이 합니다.
char *pszFolder;
char *pszDLLName;
bool bUninstall;
int arg = 1;
for (; arg < argc && (argv[arg][0] == '-' || argv[arg][0] == '/'); arg++)
{
CHAR *argn = argv[arg] + 1;
CHAR *argp = argn;
while (*argp && *argp != ':')
argp++;
if (*argp == ':')
*argp++ = '\0';
switch (argn[0]) {
case 'd': // 설치 폴더
case 'D':
pszFolder = argp;
break;
case 'f': // dll 이름
case 'F':
pszDllName = argp;
break;
case 'u':
case 'U':
bUninstall = TRUE;
// RemoveRasAdmin();
// return 0;
break;
default:
printf("%s Bad argument: %s\n", argv[0], argv[arg]);
// Usage( argv[0] );
break;
}
}
argp 가 실제 처리된 인자입니다. (당근, 문자열이죠.)
인자사용은
프로그램명 -d:/abc/efg/ -f:who.dll -u
원본 getopt와는 다르게, 옵션문자뒤에 세미콜론 : 이 있어야합니다. 주의~.