Est-ce que quelqu’un a un moyen recommandé de trouver des définitions dans les fichiers d’en-tête lors de l’utilisation de gcc? Lorsque vous utilisez MSVC, je peux simplement faire un clic droit et sélectionner “Aller à la définition”, ce qui est vraiment bien.
J’ai utilisé netbeans + gcc, et il a l’aide du code, y compris des hyperliens à la définition, donc c’est une option. Cependant, j’aimerais savoir s’il existe d’autres IDE dotés de cette fonctionnalité, ainsi que le meilleur moyen de ne pas utiliser d’EDI.
Vous pouvez lancer Doxygen pour générer un navigateur de source HTML. Cela ne nécessite pas que le code soit annoté avec la documentation de type Doxygen.
Voici un moyen de configurer et de lancer Doxygen à partir de la ligne de commande (testé sur Linux) …
echo -e "SOURCE_BROWSER=YES\n EXTRACT_ALL=YES\n RECURSIVE=YES\n SEPARATE_MEMBER_PAGES=YES\n" |doxygen - firefox html/index.html
Il existe un programme compagnon appelé doxywizard qui vous permet de parcourir les nombreuses options de configuration disponibles pour personnaliser le code HTML généré. Vous pouvez également exécuter doxygen -g
pour créer un fichier de configuration initial (qui inclut des conseils détaillés).
Je recommande les options suivantes par défaut pour générer un navigateur source:
SOURCE_BROWSER=YES ## display source code EXTRACT_ALL=YES ## display all items (not just "documented" ones) RECURSIVE=YES ## include source found in subdirectories SEPARATE_MEMBER_PAGES=YES ## optional -- each class member has its own page
Une fois que vous avez la page Web principale, vous pouvez accéder à la source d’intérêt (ou utiliser la fonction de recherche). La source est référencée avec des liens cliquables vers des déclarations pertinentes.
Essayez CScope . Avec le module Emacs xscope
vous pouvez indiquer à Emacs Mx cscope-find-global-definition
, qui saute Mx cscope-find-global-definition
au fichier dans lequel un symbole est défini. Très pratique
Bien sûr, un IDE tel qu’Eclipse ou KDevelop ou Code :: Blocks devrait également avoir une telle fonctionnalité.
Eclipse CDT est indépendant de la plate-forme et possède une telle fonctionnalité (et plus encore). Il indexe tous les éléments que vous avez dans votre projet (bibliothèque + le vôtre), vous pouvez donc trouver la définition de toute déclaration (ou, si je puis dire, toute déclaration). Vous pouvez penser à Eclipse comme à un éditeur de texte orienté C ++ sophistiqué avec des capacités supplémentaires pour lancer make (nmake.exe ou autre) avec votre fichier makefile. J’utilise les compilateurs Eclipse + MS cl.exe de WinSDK – ils fonctionnent comme des charms ensemble. Je lance nmake.exe à partir d’Eclipse et Eclipse redirige bien la console nmake.exe dans une fenêtre IDE spéciale. Il parsing également la sortie du compilateur et met automatiquement en évidence les lignes incriminées. La seule chose à faire est de configurer des variables d’environnement pour nmake.exe à partir d’Eclipse.
cscope
est l’un de mes outils favoris pour comprendre le code C, mais il se peut que cela ne se traduise pas bien dans le monde Windows.
exubérant ctags
est un excellent outil pour trouver des définitions dans des dizaines de langues. La plupart des éditeurs de programmation raisonnables fournissent une interface pour appeler les informations de définition dans les ctags
. ( vim
, par exemple, vous permet d’utiliser ^]
pour trouver une définition d’un symbole et ^T
de faire apparaître la stack de définitions. Vous construisez une firebase database à l’aide de ctags -R .
et recherchez les définitions à l’aide de votre éditeur. (Par exemple, vim -t foo
recherchera la balise foo
dans la firebase database ctags
et accèdera à ce fichier et à cette ligne.)
Le idutils
GNU idutils
fournit de bons utilitaires similaires à ctags
pour trouver des utilisations de symboles dans différentes langues. L’intégration n’est pas aussi bonne dans la plupart des éditeurs que ctags
ou cscope
mais il peut être plus facile d’écrire des outils. Vous construisez la firebase database avec mkid .
et rechercher des symboles avec gid foo
ou lid foo
ou des recherches similaires.
Je trouve que les trois outils fournissent des fonctionnalités suffisamment différentes que j’utilise couramment tous les trois. ctags
rend la chasse à travers source in vim
extrêmement rapide, cscope
peut aider à trouver des appelants et des callees, et gid
(en particulier gid -s ...
) est utile pour obtenir des conseils sur des situations complexes que les autres outils n’ont pas résolues. (Ni ctags
ni cscope
comprend bien le collage de jetons , mais gid -s
me permet d’approcher une solution moi-même.)