Я пишу простую программу, чтобы иметь -d
с параметром наряду с другими аргументамиGetopt аргументов командной строки C++ с параметрами
Я хочу, чтобы работать с aa.cc со следующими параметрами
aa -d 123 param1 param2
илиaa param1 param2 -d 123
Я написал код следующим образом
/* sample */
char *level:
while ((ch = getopt(argc, argv, "d:")) != EOF) {
switch(ch) {
case 'd':
level = optarg;
debug = TRUE;
break;
default:
usage();
/*NOTREACHED*/
}
}
Это работает хорошо, когда дается как aa -d 123 param1 param2
но не когда дается как aa param1 param2 -d 123
.
Может кто-нибудь предложить нам, как мы можем это достичь?
Обратите внимание, что 'getopt()' документируется для возврата '-1', а не' EOF' после обработки последней опции. Стандартным заголовком POSIX для 'getopt()' является '' и это не определяет 'EOF', поэтому определение' getopt() 'было изменено (довольно давно назад), чтобы отделить его от заголовка' ' , –