Я бы хотел делегировать один из нескольких возможных списков аргументов в зависимости от того, присутствуют ли конкретные аргументы, в соответствии с:
./test --do-thing-1 --option-A=7 --common-option --option-B=2 # options C and D not valid
./test --do-thing-2 --option-C=9 --common-option --option-D=1 # options A and B not valid
И лучший способ сделать это аккуратно - это main()
обработать все общие параметры и решить, какую из нескольких функций вызвать для обработки остатка.
Обратите внимание, что я не хочу ограничивать порядок, чтобы общие параметры могли появляться только первыми.
Моя проблема в том, что если я сброслю optind
на 1 до повторного разбора аргументов, getopt_long
завершится ошибкой, передав недопустимую строку в strncmp
- поэтому я не должен связываться с optind.
У меня был гугл, и я не могу найти никаких ссылок на то, можно ли прыгать по списку аргументов getopt_long
(я знаю, что это возможно для getopt
), если это так, как мне это сделать? сделать это?
Я бы предпочел не использовать какие-либо нестандартные библиотеки. (Язык простой c, пожалуйста, не пишите на c ++)