2010-11-30 5 views
2

방금 ​​두 기능을 모두 알고 있습니다. 그들의 사용법을 배우기 위해 인터넷을 검색했습니다. 명령 줄 옵션 입력을 구문 분석하는 데 매우 중요하지만 논의되지 않은 것을 발견했습니다.중복 옵션 입력이있는 getopt_long()/getopt()

중복 된 옵션을 입력하면 두 기능 모두 처리 할 수 ​​없습니다. 이 lib 함수를 사용할 수 있는지 궁금 해서요.

만약 내가 직접 처리해야합니다. 내 마음에있는 방법은 배열에 짧은 옵션을 수집하고 배열에서 동일한 것들을 찾는 것입니다.

더 좋은 방법은 없나요?

답변

2

중복 옵션과 관련하여 특별한 작업을 수행하려는 경우 은 옵션 처리 코드에서 상태를 관리 할 수 ​​있습니다.

-v|--verbose 같은 뭔가가 추가 verboseness 반복하고 vebosity 처리 코드는 목록 또는 일부를로드, 모든을 사용할 필요가 인수를 반복 할 수있는 옵션에 대한

// initialize 
int verbose_level=0 

// in the getopt case for -v 
    verbose_level++; 

을 (입니다 수 있습니다 이러한).

당신이 반복이 특별한 일을하지 않으려면 그냥 값마다

// in the case 
    verbose_level = 1; 

하고 반복

// in the case 
    if (verbose_level) { 
    // handle this case as an error... 
} 
+0

안녕, 회신에 대한 감사를 탐지 할 경우를 설정! – tao

+1

다음과 같이 명령을 입력하면 의미가 있습니다 :> Appexec.exe --same-option --same-option. 따라서이 경우 옵션 처리는 사용자에게 오류 정보를 표시하고 종료해야합니다. 그 사건을 처리 할 lib API가 없다고 생각합니다. 그것은 자기에 의해 수행되어야합니다. – tao

관련 문제