Я знаю следующее:
-  Достопочтенный getopt(3)
-  Расширенный getopt_long
-  парсер glibc  argpдля векторов аргументов в стиле Unix
- popt из проекта GNOME (или его духовного наследника в Glib)
Я уверен, что есть еще то, чего я не использовал или даже не слышал; быстрый поиск в Google показывает Gopt, argtable и Optlist.
 Лично мне argp всего нравится argp, и каждая программа, которую я написал с использованием getopt/getopt_long (за пределами определенного базового уровня сложности), была преобразована в argp. Он более широко доступен, чем popt, более мощный, чем getopt_long, хорошо документирован, совместим со всеми соглашениями в стиле GNU и очень гибок. С другой стороны, его далеко не так просто использовать (благодаря его гибкости), а код для его поддержки довольно многословен (как и многие другие вещи в C).
Что вы используете и почему?
Да, я имею в виду C, а не C++. Существует множество парсеров C++, но я не использую C++.
 Джон Милликин отмечает, что popt больше не поддерживается. Я перечисляю это, потому что много программ все еще используют это - включая AbiWord, rpm, rsync и samba - несмотря на усилия Gnome по миграции. Но я также добавил ссылку на анализатор аргументов Glib.
Для разбора аргумента C++ см. Вопрос Какие библиотеки синтаксического анализатора параметров существуют для C++?
