Как мне реализовать поддержку флагов командной строки, которые могут отображаться в любом порядке?
Например, gcc -I "dir" -o "file" -o1....
Чтение каждого argv
и сравнение его с каждым возможным флагом кажутся плохой практикой для меня и трудно поддерживать.
Я рекомендую использовать Boost.Program_options. Он будет обрабатывать все сложности анализа параметров команды для вас. Вам просто нужно указать, какие доступные параметры и какие значения они могут принимать, и т.д.
Одним из наиболее полезных средств для этого является парсер GNU Argp. Мало того, что он обеспечивает масштабируемую поддержку того, что вы просите, но также автоматически генерирует --help
и --version
(если вы его запрашиваете).
Он также автоматически запускается с GNU Libc, и для него даже существует модуль gnulib.