getopt — захватить ‘?’

Я пытаюсь использовать getopt в программе на C ++ для разбора аргументов командной строки.
Аргументы: -d xxx, -s xxx и — ?.
У меня проблемы с захватом -? аргумент, который я хочу напечатать стандартное сообщение об использовании.

while ((c = getopt (argc, argv, "?d:s:")) != -1) {
switch (c) {
case 'd':
...do stuff
break;
case 's':
... do stuff
break;
case '?':
// From example on GNU page, seems to capture -d, -s when no args provided.
// Gets here when -d or -s provided, but no arguments for these options.
default:
// shut down
}

Попробуйте, как я мог, я не могу захватить «-?» вариант сам по себе. Есть ли специальный трюк, чтобы поймать? сам по себе? Предоставил ли я правильный шаблон для getopt (т.е. ‘? D: s:’)
В данный момент c устанавливается на ‘?’ всякий раз, когда предоставляются неверные параметры, даже если ‘?’ НЕ указывается в командной строке.

Спасибо, парни.

0

Решение

getopt использования '?' в качестве специального значения для обозначения отсутствующего значения параметра или неизвестного параметра. Поэтому я не думаю, что есть какой-либо способ использовать getopt обрабатывать ‘-?’.

Я бы порекомендовал ‘-h’ для сообщения помощи. Это общее соглашение.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]