Ниже показан пример того, как выглядит справочное сообщение, сгенерированное данной таблицей параметров.
Usage: grep [OPTION...]
Использование: grep [ПАРАМЕТРЫ...]
-Е, --extended-regexp шаблоном для соответствия является
расширенное регулярное выражение
-F, --fixed-strings шаблоном для соответствия является
базовая строка (не регулярное выражение)
-G, --basic-regexp шаблоном для соответствия является базовое
регулярное выражение
-i, --ignore-case выполнять поиск, чувствительный к регистру
-m, --max-count=N завершить после получения N совпадений
-е, --regexp=pattern регулярное выражение для поиска
Help options:
-?, --help Show this help message
--usage Display brief usage message
Параметры
справки:
-?, --help Показать это сообщение
--usage Отобразить краткое сообщение об использовании
Хотя эта информация и имеет привлекательный вид, она требует некоторых уточнений. В первой строке не сказано, что команда ожидает имена файлов в командной строке. Показанный здесь текст
[OPTION...]
принят в
popt
по умолчанию, и с помощью функции
poptSetOtherOptionHelp
может быть изменен для получения более детального описания.
Первым параметром является содержимое, а второй параметр определяет текст, который должен появиться после имени программы. Если добавить следующий вызов
то первая строка в справочном сообщении будет изменена на
Usage: grep <шаблон> <список файлов>
Использование: grep <шаблон> <список файлов>
что является более точным.
Последнее, что требуется уточнить в отношении справочных сообщений, это способ обработки вложенных таблиц. Давайте снова обратимся к справочному сообщению для нашей программы
grep
; для параметров справки выделяется отдельный раздел справочного сообщения. Если элемент
POPT_ARG_INCLUDE_TABLE
таблицы параметров содержит член
descrip
, то строка будет использоваться в качестве описания для всех параметров во вложенной таблице, и эти параметры будут отображаться в своем собственном разделе справочного сообщения (подобно параметрам справки для
tail
). Если
descrip
будет иметь значение
NULL
, то параметры для вложенной таблицы будут отображаться вместе с параметрами из главной таблицы, а не в своем собственном разделе.
Иногда программы предлагают параметры, которые, возможно, не должны использоваться; они могут быть включены для поддержки унаследованных приложений или приложений, разработанных только для тестирования. Автоматическая генерация справочных сообщений для такого параметра можно подавить с помощью битового "ИЛИ"
POPT_ARGFLAG_DOC_HIDDEN
и члена
arg
структуры
struct poptOption
, описывающей данный параметр.
26.3. Использование обратных вызовов
Мы показали два способа обработки параметров с помощью библиотеки
popt
: с помощью возврата параметра функцией
poptGetNextOpt
и путем автоматического изменения переменных во время представления параметров. К сожалению, ни один из этих способов не подходит для вложенных таблиц. Очевидно, что возвращение параметров, определяемых во вложенной таблице для обработки в приложении, не будет работать, поскольку вложенные таблицы предназначены для того, чтобы приложению не нужно было знать, какие параметры предлагает библиотека. Присвоение переменным значений тоже не подходит, поскольку в этом случае не ясно, каким переменным нужно присваивать значения. Использование глобальных переменных часто тоже является неподходящим, а библиотека не имеет доступных для использования локальных переменных, поскольку синтаксический анализ выполняется из главного приложения, а не из библиотеки. Чтобы обеспечить гибкую обработку параметров во вложенных таблицах, библиотека
popt
предлагает использовать обратные вызовы (callback).