Подтвердить что ты не робот

Стандартные теги библиотеки

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

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

4b9b3361

Ответ 1

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

Ответ 2

Как правило, трудно извлечь теги из 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.

Ответ 3

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

Ответ 5

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

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