Je ne comprends pas correctement la compilation et la liaison de programmes C++. Y at-il un moyen, je peux regarder les fichiers objets générés en compilant un programme C++ (dans un format compréhensible). Cela devrait m'aider à comprendre le format des fichiers objets, comment les classes C++ sont compilées, quelles informations sont nécessaires au compilateur pour générer les fichiers objet et m'aider à comprendre les instructions comme:Besoin d'aide pour comprendre la compilation de programmes C++
si une classe est utilisée uniquement en tant que paramètres d'entrée et type de retour , nous n'avons pas besoin d'inclure le fichier d'en-tête de la classe entière. La déclaration forward est suffisante, mais si une classe dérivée dérive de la classe de base, nous devons inclure le fichier contenant la définition de la classe de base (Provenant de "C++ Exceptionnel"). Je lis le livre "Linking and Loading" pour comprendre le format des fichiers objet, mais je préférerais quelque chose de spécialement conçu pour le code source C++.
Merci,
Jagrati
Edit:
Je sais que avec nm je peux regarder les symboles présents dans les fichiers objet, mais je suis intéressé à en savoir plus sur les fichiers d'objets.
Je ne pense pas que regarder les fichiers d'objets aidera à comprendre les points que vous avez mentionnés. Il est probablement plus utile de réfléchir à la question "qu'est-ce que le compilateur doit savoir pour créer du code machine pour cette entrée"? Par exemple, pour passer un 'A * a' à la fonction suivante, le compilateur n'aura pas besoin de savoir à quoi ressemble A, mais pour appeler' a-> foo() ', c'est le cas. Et pour dériver de 'A', au moins la taille et toutes les signatures de méthode de' A' doivent être connues. –
Salut Christopher, je suis d'accord avec vous. En fait, c'est de là que je voulais partir. Mais, même des choses comme "dériver de A, au moins la taille de A doit être connue" n'est pas si évidente pour moi. Pourquoi la connaissance de la taille de A ne peut-elle pas être reportée avant l'heure d'exécution ou dire à l'heure de la liaison par rapport à l'heure de la compilation, quand les fichiers objets sont créés. Et donc, j'ai conclu que j'ai peut-être besoin de comprendre d'un point de vue différent ce que le compilateur d'information met dans les fichiers objets. – xyz
Je pense que le livre de Stanley B Lippman: "A l'intérieur du modèle objet C++" peut vous aider à comprendre certains sujets –