我的emacs版本为23.2.1,尽管我使用了以下方法将后端更改为使用GTAGS。(需要‘semanticdb/db-全局)(语义db-启用-全局-数据库-c-模式)(语义数据库-启用-全局-数据库的c++模式)我试图生成一个GTAGS文件,用作语义的后端。然而,每次打开C文件时,语义仍然在不使用GTAGS文件的情况下解析文件。
发布于 2010-09-27 23:54:57
Semantic不使用GTAGS文件生成标记,它将直接用于诸如跳转或智能完成等功能。语义db的Global后端将使用GTAGS作为一个巨大的名称表。因此,如果您需要按名称查找符号,GTAGS将告诉它在哪里,semantic将更直接地解析这些文件本身以获取细节。
GTAGS不直接用作替代解析器的原因是,GTAGS中的信息不足以满足各种操作语义需求,因为它不包括数据类型信息、参数解析和本地上下文解析。
在/usr/include中使用gtag是一个有趣的想法,但可能不会得到太多的使用。Semantic将只搜索代码中实际使用的头文件,而不是搜索所有包含的文件。Global后端专门用于扫描整个项目的符号或符号引用。如果您想搜索所有包含的符号,那么它将是有用的,但此时语义上没有这样的特性。
可以使用ebrowse来做您想做的事情,但是我发现对于C++来说,解析器在一些微妙的方面是不够的,并导致了一些问题。
如果您认为语义解析器是不准确的,那么您应该将其作为bug发布到cedet list devel邮件列表中。
https://stackoverflow.com/questions/3791628
复制相似问题