我使用标记文件来完成代码并快速查看参数、重载、文件(声明的位置)等。在哪里可以找到 C99、C++03 和 C++0x 标准库的免费可用标记? (C89 总比没有好,但我宁愿拥有 C99。)
我更喜欢没有杂乱无章的标签;例如,实现对参数使用保留名称,因此我宁愿看到“std::min(a, b)”,而不是“std::min(_M_a, _M_b)”。这个问题和其他问题排除了从实际实现中生成的可能性。虽然我认为一些后处理可能会清理这些(尤其是标识符问题),但从头开始编写似乎更容易。
通常很难从中提取标签,libc
因为函数声明很可能在头文件中作为复杂的宏实现。可以nm
用来查找由 a 库导出的符号列表,但这并不能解决参数列表。
我认为这里最好的解决方案是解析文档:
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 模块解析页面非常容易。
对于那些确切的要求,您可能必须自己创建那些:(
使用标题目录上的 ctags 为自己生成一个标签库,就像您在问题中链接的帖子博客中所写
如果完成标准库是主要问题,clang vim 插件在完全不使用标签的情况下做得很好。然而,补全中仍然有一些参数“cruft”,因为它使用了标题使用的符号。
您主要只是在 ~/.vim/plugin 中放置一个文件,安装 clang,它就可以工作了。比全能路径简单得多。到目前为止,我在有限使用它的过程中遇到的唯一问题是,有时完成它的速度很慢。
这不是一个完整的答案。有人发布了一个perl 脚本来从 SGI 的 STL 文档中提取标签。它不包括函数参数名称。由于它适用于文档,因此没有任何问题。希望这个对你有帮助。