Quel est un bon moyen de trouver des définitions dans les fichiers d’en-tête lors de l’utilisation de gcc?

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.)