Intereting Posts
Запрос MIT Scheme: стрелки отступа и стрелки вверх / вниз Не удается переслать при просмотре экрана приветствия в Fedora 15 Как назвать объем в Linux, чтобы я мог распознавать каждый том в файловой системе? Как получить исходный MAC-адрес сетевой карты после изменения ОС? Служба Openfire Начиная с сбоя в CentOS mail: невозможно отправить сообщение: процесс завершен с ненулевым статусом Как подключить удаленную файловую систему shorewall / iptables – ограничение исходящих портов пользователем Дублирование индексов в массиве Bash: как получить значение из массива для создания команды из него Samba 4 действительно уважает Unix-файлы acls? Как установить digikam5 на Linux Mint? Будут ли обе виртуальные машины, имеющие один и тот же IP-адрес, заставлять меня пинговать себя Как я могу изменить команду Linux на другую комбинацию клавиш? kubuntu 14.04 – не показывать окно в панели запуска, когда на другом рабочем столе

Есть ли раздел пользователя или другой репозиторий doc для определения структуры данных?

В миллионный момент или около того мне пришлось искать /usr/include/foo.h чтобы найти членов struct foo или foo_t или что-то еще. Есть секция man для вызовов библиотеки и ядра, некоторые из которых включают описания структур данных, а другие нет. Есть ли место для поиска определений структур данных ядра и библиотеки?

В библиотеке GNU C имеется справочное руководство, которое включает документацию для всех или большинства структур данных в стандартной библиотеке и расширениях. У этого есть индекс типа . Помните, что есть также «Справочное руководство по GNU C», но это и «Справочное руководство по библиотеке GNU C» – это две разные вещи.

Вы также можете автогенерировать документацию, достаточную для просмотра структур данных с помощью doxygen (обратите внимание, что он работает намного лучше с материалами, которые фактически аннотируются для него, но это может быть грубо использовано таким образом). Я попробовал это здесь в /usr/include и потребовалось <2 минуты (создание, nb, ~ 800 МБ html). Этапы:

  1. Создайте базовый файл конфигурации где-нибудь (в любом месте), doxygen -g doxygen.conf .

  2. Отредактируйте файл и измените следующие параметры:

     OUTPUT_DIRECTORY = /home/foo/whatever # documentation goes here OPTIMIZE_OUTPUT_FOR_C = YES EXTRACT_ALL = YES INPUT = /usr/include FILE_PATTERNS = *.h RECURSIVE = YES GENERATE_LATEX = NO 

    Обратите внимание, что все те, которые уже существуют в конфигурационном файле, вам нужно выполнить поиск и изменить / установить значения, как показано.

  3. Создать: doxygen doxygen.conf .

Теперь откройте /home/foo/whatever/html/files.html . Существует index.html , но это, вероятно, WTF'd (опять же, doxygen в первую очередь предназначен для материалов, специально предназначенных для него), поэтому список файлов имеет самую предикативную точку входа. Существует также обширный «Индекс структуры данных», но по какой-то причине не все, что вы думаете, индексируется в нем. Например, есть structstat.html вы можете достичь, следуя списку файлов, asm-generic -> stat.h , но «struct stat» не упоминается в «Индексе структур данных». Многие стандартные файлы C lib следуют этому шаблону: в предикативном заголовке ( sys/stat.h ) есть макрос / define / typedef, который вытягивает что-то extern, которое заканчивается тем, что находится в заголовке платформы / системы, например asm-generic.h . Я уверен, что вы это заметили раньше. Пример stat не так уж плох, поскольку по крайней мере окончательное определение по-прежнему называется struct stat а не struct _fooX_stat .

Так что это немного привыкает и, в конце концов, не намного лучше, чем инструменты с grep . Он также имеет преимущество (?) В том, что включены не-пользовательские поля (например, сравните struct stat как описано выше, с его описанием в man 2 stat ). Для стандартной библиотеки (и расширений GNU) справочное руководство намного лучше. Однако материал WRT, которого нет в этом руководстве, немного лучше, чем ничего. Я бы рекомендовал, чтобы, если вы хотите использовать его таким образом, было бы лучше делать отдельные каталоги самостоятельно, а не весь shebang (подсказка: вы можете установить RECURSION = NO ). 800 МБ html довольно громоздкий.