我使用code completion的标记文件以及参数,重载,文件(声明的地方)等的快速内联视图。我在哪里可以找到C99,C ++ 03和C99的免费标签C ++ 0x标准库? (C89总比没有好,但我宁愿拥有C99。)
我更喜欢没有瑕疵的标签;例如实现使用参数的保留名称,所以我宁愿看到“std :: min(a,b)”而不是“std :: min(_M_a,_M_b)”。此问题和其他问题排除了从实际实现中生成。虽然我认为一些后处理可能会清理它们(特别是标识符问题),但从头开始编写它似乎更容易。
答案 0 :(得分:5)
通常很难从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模块解析页面非常简单。
答案 1 :(得分:2)
使用标头dir上的ctags为自己生成一个标记库,就像你在问题中链接的帖子博客中所写的那样
答案 2 :(得分:2)
对于那些确切的要求,您可能需要自己创建:(
答案 3 :(得分:0)
这不是一个完整的答案。有人发表了perl script to extract tags from SGI's STL documentation。它不包括函数参数名称。因为它适用于文档,所以没有任何瑕疵。希望这有点帮助。
答案 4 :(得分:0)
如果标准库的完成是主要问题,clang vim plugin完全没有使用标签。然而,在完成中仍然存在一些参数“cruft”,因为它使用标题使用的符号。
你主要只是在〜/ .vim / plugin中删除一个文件,安装clang,它就可以了。比omnicomplete路线简单得多。到目前为止,我在限制使用它时遇到的唯一问题是,有时它很快会出现完成。