Стандартные теги библиотеки - PullRequest
18 голосов
/ 12 октября 2010

Я использую файлы тегов для завершения кода и для быстрого, встроенного просмотра параметров, перегрузок, файлов (где они объявлены) и т. Д. Где я могу найти свободно доступные теги для C99, C ++ 03, а C ++ 0x стандартные библиотеки? (С89 лучше, чем ничего, но я бы предпочел С99.)

Я предпочитаю метки без ворса; например реализации используют зарезервированные имена для параметров, поэтому вместо «std :: min (_M_a, _M_b)» я предпочел бы видеть «std :: min (a, b)». Эта и другие проблемы исключают генерацию из реальных реализаций. Хотя я полагаю, что некоторая постобработка может очистить их (особенно проблему с идентификаторами), почти кажется, что было бы легче писать с нуля.

Ответы [ 5 ]

5 голосов
/ 16 октября 2010

Как правило, трудно извлечь теги из libc, потому что объявления функций, вероятно, будут реализованы в заголовках как сложные макросы.Можно использовать nm, чтобы найти список символов, экспортируемых библиотекой, но это не относится к списку параметров.

Я думаю, что лучшее решение здесь - это анализ документации:

Вот список всех функций и макросов, экспортируемых libc в легко разбираемом формате:

http://www.gnu.org/s/libc/manual/html_node/Function-Index.html#Function-Index

Каждая функция ссылается на страницу со списком параметров для этой функции., также в предсказуемом формате:

http://www.gnu.org/s/libc/manual/html_node/Block-Input_002fOutput.html#index-fread-1010

С парсингом страниц довольно просто, используя BeautifulSoup модуль Python.

2 голосов
/ 16 октября 2010

Для этих точных требований вам, вероятно, придется создать их самостоятельно: (

2 голосов
/ 13 октября 2010

создайте себе библиотеку тегов, используя ctags в заголовках dir, как написано в блоге, который вы указали в своем вопросе

0 голосов
/ 26 ноября 2010

Если получение завершения для стандартных библиотек является основной проблемой, плагин clang vim делает это довольно хорошо, без использования тегов вообще.Однако в доработках все еще есть некоторый параметр "cruft", поскольку он использует символы, используемые в заголовке.

В основном вы просто перетаскиваете один файл в ~ / .vim / plugin, устанавливаете clang, и это работает.Гораздо проще, чем универсальный маршрут.Единственная проблема, с которой я до сих пор сталкивался в своем ограниченном использовании, заключается в том, что иногда это дается медленно, заканчивая доработки.

0 голосов
/ 15 октября 2010

Это не полный ответ.Кто-то опубликовал скрипт perl для извлечения тегов из документации SGI по STL .Он не включает имена параметров функции.Так как он работает по документации, здесь нет никакой разницы.Надеюсь, это немного поможет.

...