GNU/Linux 컴퓨터에서 getopt_long
을 사용합니다.옵션의 필수 인수가 없다는 것을 어떻게 결정할 수 있습니까?
static struct option long_options[] = {
{"mode", required_argument, 0, 9},
{0, 0, 0, 0}
};
내가 명령을 내 프로그램을 실행 코드
c = getopt_long(argc, argv, "", long_options, index_ptr);
의 다음 줄 유무 : :로 초기화 옵션 목록 '?'코드
prog --mode
위 라인이 반환을 C에서,하지만 ':'getopt(3)
man 페이지에 따라 예상대로 : /분석 짧은 옵션을 사용할 때
예, 하나에서 쓸 수 있었다 "오류 -1 반환 getopt는()의 경우와 동일" 옵션은 ": m :"과 같은 형식을 가지므로 변수가 누락 된 인수에 c에 ':'이 아닌 ':'가 포함되지만 구문 분석시 두 경우 (누락 된 인수, 잘못된 옵션)를 구분하기 위해 수행해야하는 작업은 입니다. 긴 옵션 만?
어떻게 잘못된 옵션과 필수 인수가 누락 된 옵션을 구별 할 수 있습니까? 내가 잘못된 옵션 및 누락 된 인수 유효한 옵션을 구분의 목표를 달성하기 위해 볼 수 있습니다
예를 들면 다음과 같습니다 "9" ? ([긴 옵션 구문 분석 예제] (https://www.gnu.org/software/libc/manual/html_node/Getopt-Long-Option-Example.html#Getopt-Long-Option-Example)을 참조하십시오. –
@DavidBowling '.val'은'int'이지만'.flag' 포인터가 NULL이 아닌 경우 주로 사용됩니다. '9'는 바로 가기 인수를 탐지하는 데 사용할 수 없으므로''m ''(모드)과 같은 문자를 사용하는 것이 좋습니다. –
예, 질문을하기 전에 glibc 참조 설명서의 getopt [_long] 섹션을 읽었습니다. 그러나 그 경우에 무엇이 반환되어야하는지는 명확하지 않다. –