2017-12-24 6 views
1

Ich benutze Ctags Befehlszeilentool, um den C++ Code zu navigieren, aber wenn ich zur polymorphen Funktionsdefinition springen wollte, wird es nicht richtig auf diese Definition springen. Bitte sagen Sie, ob ein Problem mit Ctags oder anderen Konfigurationen besteht, die hinzugefügt werden sollen. Oder lassen Sie mich bitte wissen, ob es ein besseres Werkzeug gibt, um in modernem C++ Code zu navigieren. Vielen Dank!Ctags funktioniert nicht für polymorphe Funktion

ich in der Regel laufen ctags Befehl wie folgt (auf VIM):

ctags -R *

Antwort

1

Da Sie C++ Code zu navigieren, ich denke, Sie Exuberant Ctags verwenden.

This Exuberant Ctags Mailinglist response erklärt, wie Definitionen von virtuellen Funktionen springen:

wenn man sich die Tags-Datei suchen, sollten Sie alle Erklärungen & Definitionen von my_func siehe vorhanden sind. Wenn nicht, und die Deklaration fehlt, versuchen Sie, --C++ - arten = + p zur Befehlszeile dessen, was ist, Ihre Tag-Datei zu generieren.

Sie können alle möglichen c betrachten ++ - Arten mit ctags --list-kinds=c++:

c classes 
d macro definitions 
e enumerators (values inside an enumeration) 
f function definitions 
g enumeration names 
l local variables [off] 
m class, struct, and union members 
n namespaces 
p function prototypes [off] 
s structure names 
t typedefs 
u union names 
v variable definitions 
x external and forward variable declarations [off] 

Über Ihre zweite Frage, ob es ein besseres Werkzeug ist ein modernes C++ Code zu navigieren: Many IDEs do use ctags. Aber ich verwende derzeit Clion, die some good search and navigation features bietet. Sie könnten auch einen Überblick über diesen Spickzettel erhalten:

Aber manchmal Navigation funktioniert nicht, zum Beispiel find usage für ctors. Außerdem hat mein Clion einige Performance-Probleme. Vielleicht möchten Sie stattdessen versuchen:

Verwandte Themen