Шрифт:
Рассмотрим упражнение 4.3.
Примените функцию
На самом деле и новые длинные опции, и исходные односимвольные можно смешивать. Длинным опциям также можно давать сокращенные названия, но они
должны отличаться от односимвольных опций. Длинные опции с аргументом можно задавать как единый аргумент в виде --опция= значение, как показано далее:
Далее приведена новая программа longopt.c, полученная из программы argopt.c с изменениями, обеспечивающими поддержку длинных опций, которые в тексте программы выделены цветом.
Как это работает
Функция
Массив длинных опций состоит из ряда структур типа
Структура длинной опции определена в заголовочном файле getopt.h и должна подключаться с помощью константы
Элементы структуры описаны в табл. 4.1.
Таблица 4.1.
Параметр опции | Описание |
---|---|
name | Название длинной опции. Сокращения будут приниматься до тех пор, пока они не создадут путаницы при определении названий других опций |
has_arg | Принимает ли эта опция аргумент. Задайте 0 для опций без аргументов, 1 для опций, у которых должно быть значение, и 2 для опций с необязательным аргументом |
flag | Задайте NULL , чтобы getopt_long вернула при обнаружении данной опции значение, заданное в val . В противном случае getopt_long возвращает 0 и записывает значение val в переменную, на которую указывает flag |
val | Значение getopt_long для данной опции, предназначенное для возврата |