2011-03-03 2 views
3

getopt_long()에서 약어를 해제 할 수 있습니까? 맨 페이지에서 :getopt_long (optarg.h)의 약어를 끕니까?

약자가 고유하거나 일부 정의 된 옵션과 정확히 일치하는 경우 긴 옵션 이름을 축약 할 수 있습니다.

코드 조각에 대해받은 사양에 플래그의 전체 길이가 정확히 일치해야하며 많은 플래그가 있기 때문에이 작업을 수행하고 싶습니다.

답변

4

코드 백,

약어 기능을 사용하지 않도록 설정 한 방법이 없습니다. 이 기능을 원할 때는 혼자가 아닙니다. 참고 : http://sourceware.org/bugzilla/show_bug.cgi?id=6863

불행히도 위의 버그 보고서가 "WONTFIX"로 해결되었으므로 glibc 개발자가 옵션을 원하지 않는 것 같습니다. 당신은 여기에 운이있을 수 있습니다 : - \ 대신 getopt는 (의 argp_parse을())를 사용하는 경우 (매우 reccommended, BTW)

+1

정보를 제공해 주셔서 감사합니다. – Codeape

2

, 당신은을 통해 사용자가 입력 한 정확한 플래그를 액세스 할 수 있습니다

 
state->argv[ state->next - 2 ] 

해킹 비트이지만 작동해야합니다.

0

이 완벽한 해결책은 아니지만 아래처럼 (일반적으로 스위치 내에서)) (getopt_long는 호출 한 후 사용자가 주어진 정확한 인수를 확인할 수 있습니다

if (strcmp(argv[optind-1], "--longoption") == 0) 

OPTIND 점을 당신이 처리해야 다음 인수입니다. 따라서 optind-1을 사용하여 원래 arg에 액세스 할 수 있습니다.

관련 문제