C - Quelle option dois-je utiliser pour produire un fichier de liste?
Je suis nouveau sur le langage de programmation C et gcc.
Je suis en train d'essayer de déchiffrer un peu complexe C programme. Je voudrais lire une utile liste de fichier à la place du fichier source.
Je suis à la recherche d'un fichier de liste créé par le compilateur gcc qui contient:
- le code source pour tous les inclut
- xref = renvoi d'inscription
- référence à l'endroit où la variable est déclarée. Par exemple, si la ligne contient
i++;
, puis une note indiquant ont étéi
est déclarée.
J'ai fait une recherche, mais gcc a donc beaucoup d'options, je me suis perdu.
Si il y a un meilleur endroit pour poser ma question, s'il vous plaît laissez-moi savoir.
Les listes sont tellement 1960-s! Obtenez un environnement de développement intégré à la place 🙂 (à prendre avec un grain de sel)
Même Cobol avait une croix de référence en option. Comment dois-je aller sur la compréhension d'un programme C avec les deux commentaires en plus de la licence GNU?
La croix-référencement est la chose la plus facile dans les Ide modernes. Vous cliquez droit sur une variable ou une fonction, et sélectionnez "aller à" définition " ou "trouver tous les usages", et l'IDE trouve pour vous. Pas de papier, pas d'imprimantes, c'est presque aussi facile que la navigation dans des liens hypertexte.
Êtes-vous sûr que vous voulez voir "le code source de toutes les comprend"? Même stdlib.h et stdio.h? Sauf si vous êtes le piratage de la glibc, l'info, les fichiers peuvent être utiles.
Même Cobol avait une croix de référence en option. Comment dois-je aller sur la compréhension d'un programme C avec les deux commentaires en plus de la licence GNU?
La croix-référencement est la chose la plus facile dans les Ide modernes. Vous cliquez droit sur une variable ou une fonction, et sélectionnez "aller à" définition " ou "trouver tous les usages", et l'IDE trouve pour vous. Pas de papier, pas d'imprimantes, c'est presque aussi facile que la navigation dans des liens hypertexte.
Êtes-vous sûr que vous voulez voir "le code source de toutes les comprend"? Même stdlib.h et stdio.h? Sauf si vous êtes le piratage de la glibc, l'info, les fichiers peuvent être utiles.
OriginalL'auteur historystamp | 2012-04-27
Vous devez vous connecter pour publier un commentaire.
Je comprends votre dilemme. Il y a des années, j'ai essayé de faire exactement ce que vous faites, mais finalement, j'ai abandonné. Bien que littéralement pourrait le faire, le résultat serait de noyer le code correspondant à autant de code non-pertinentes pour le problème à portée de main pour être inutile.
Je crains que vous allez avoir à apprendre à lire le code de C dans C. Si le code est complexe, et vous êtes un débutant, alors, pour le moment, vous êtes probablement au-dessus de votre tête.
Si vous voulez l'essayer, de toute façon, ensuite, regardez le nom de la source de plusieurs *.h "en-tête" des fichiers. Choisissez trois ou quatre fichiers d'en-tête qui vous semblent susceptibles de satisfaire à la partie centrale du problème. Lisez d'abord ces fichiers. Élargir votre lecture à partir de là. Ce n'est pas facile, jusqu'à ce que vous obtenez le coup de lui.
Bonne chance.
chaque référence semble être un pointeur.
OriginalL'auteur thb
Une approche différente. Si vous utilisez c'est à dire Vim puis exécutez cscope sur le code.
Par exemple, j'ai Ctrl+\ comme un cscope déclencheur. Si je suis dans une fonction:
Aussi, vous pouvez sauter comme ça dans des fichiers, dans les inclut les, fonctions de liste de l'appel d'une fonction spécifique, la liste des fonctions une fonction est l'appel, la liste des fichiers dont un fichier, sauter à l'endroit où les variables sont définies etc. Tous au sein d'un couple de coups de clés.
Chaque saut est ajouté à une pile LIFO et Ctrlt apporte un retour à l'endroit où je suis entré dans le dernier saut-de commande.
En outre ajouter c'est à dire
Taglist
et vous obtenez une liste sur le côté de la fenêtre avec tous les définit, des variables, des fonctions, etc. dans une liste triée.Une autre option consiste à compiler le code avec soit
-ggdb
et de l'exécuter dans un IDE comme Code::Blocks, utilisez DDD ou similaires – et l'étape à travers le code de l'exécuter en tant que processus. Peut être assez éducatif.OriginalL'auteur Morpfh
Vous n'avez pas. Vous utilisez un programme qui ne la liste séparément. C'est bête pour les compilateurs d'avoir à savoir sur l'impression de trop.
Je recommande a2ps. Pour une référence croisée, recherchez cxref.
OriginalL'auteur Charlie Martin
Pour répondre à votre question #1, il est possible de voir le code source pour tous le comprend en regardant le préprocesseur de sortie à l'aide de
gcc -E
. Toutefois, ce code sera probablement plus difficile à comprendre, donc c'est probablement pas vraiment ce que vous cherchez, même si je trouve qu'il est utile dans certains cas pour des choses que j'ai besoin de faire.OriginalL'auteur Gabriel Southern
Bien, je SUIS de la vieille école, et ce que la coopérative doit se pré-sortie du processeur, et oui, il peut être plus édifiant qu'un IDE. Le préprocesseur s'occupe de toutes les # énoncés, comme #include et #ifdef. Donc, il vous montre ce que devient finalement l'entrée pour le compilateur.
Le g++ homme explique le en 4 étapes:
de prétraitement, de compilation, d'assemblage et de liaison
et il continue à expliquer que la séquence peut être arrêté à tout moment. Puis, sous "Options de Préprocesseur", le moyen de contrôler ce qui est expliqué. Comme un autre post a déclaré, -E fera l'affaire, mais ce n'est qu'une partie de la réponse. Pour un contrôle plus précis d'utiliser l'option-f de la famille des options, telles que-fdirectives seule. C'est probablement ce que l'OP veut, c'est:
Pour les personnes à l'aide de C++, je recommande d'utiliser g++ directement:
Souhaité inscription est alors dans MySrc.lst
OriginalL'auteur Joseph Argenio