Ton*_*vel 32
你确定你用正确的选项打电话给ctags吗?对于C++,我使用:
ctags --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
这是文档对该--c++-kinds=+p选项的说法:
在解析C++成员函数定义(例如"className :: function")时,ctags无法确定作用域说明符是类名还是名称空间说明符,并始终将其列为扩展字段的作用域部分中的类名.此外,如果在类声明(通常情况)之外定义了C++函数,则函数声明中包含的访问规范(即公共,受保护或私有)和实现信息(例如虚拟,纯虚拟)不可知为函数定义生成标记.然而,它可用于原型
(例如--c ++ - types = + p).
该--fields=+iaS选项:
a Access (or export) of class members
i Inheritance information
S Signature of routine (e.g. prototype or parameter list)
Run Code Online (Sandbox Code Playgroud)
该--extra=+q选项:
因为,默认情况下,ctags仅为源文件中找到的单独标识符生成标记.如果指定--extra = + q选项,那么ctags还将为表格class :: member for C++和表单类中的每个类成员(数据和函数/方法)生成第二个类限定标记. .Eiffel和Java的方法.
该--language-force=C++选项:
默认情况下,ctags会自动选择源文件的语言,忽略那些无法确定其语言的文件(请参阅上面的SOURCE FILES).此选项强制指定的语言(不区分大小写;内置或用户定义)用于每个提供的文件,而不是根据其扩展名自动选择语言.此外,特殊值auto表示应自动选择语言(这有效地禁用了此选项).