20 votes

VC++ "Génération de code", qu'est-ce que cela signifie ?

Lors de la compilation dans Visual Studio, le compilateur produit ceci à ce qui semble être sa propre discrétion :

1>Générer le code...

qu'est-ce qu'il fait ici exactement ?

17voto

AndreyT Points 139512

Il fait ce qu'il dit : il génère les informations suivantes. code machine . De nombreux compilateurs traduisent les sources C/C++ en une représentation interne intermédiaire qui est ensuite utilisée comme source pour générer le code machine réel. Le compilateur Visual C++ (comme beaucoup d'autres compilateurs) fait cela en lots : il traduit d'abord un tas de fichiers sources dans cette représentation intermédiaire, puis les convertit tous en code machine (et commence ensuite à travailler sur le lot suivant). C'est ce qui se passe lorsque vous voyez les messages "Generating code".

Je ne sais pas quelle logique exacte il utilise pour diviser les fichiers sources en lots. Peut-être que cela fonctionne simplement par la taille : une fois que la taille totale de toutes les représentations intermédiaires générées jusqu'à présent atteint une certaine limite, il passe en mode "génération de code". Peut-être qu'il y a aussi une autre logique à l'œuvre.

Dans tous les cas, notez que le terme non qualifié "code" dans ce cas ne fait pas référence au code source, ce qui signifie qu'il n'a rien à voir avec les modèles et/ou le préprocesseur ou quoi que ce soit d'autre. De plus, faire référence aux sources C avec le terme non qualifié "code" (par opposition au terme qualifié " source code") est un concept très spécialisé, plus à l'aise dans les services de marketing que chez les programmeurs. Au niveau des programmeurs, personne ne se réfère aux sources C comme à un simple "code" :)

4voto

sbi Points 100828

Le compilateur reçoit plusieurs fichiers d'entrée en même temps et il en lit (analyse) plusieurs en une seule fois, puis produit des sorties (fichiers objets) pour ces fichiers, avant de lire d'autres fichiers d'entrée. Je suppose qu'il s'agit d'une optimisation, sans doute parce que l'accès mixte lecture/écriture au disque est plus lent que lorsqu'il est trié en (d'abord) accès en lecture et (ensuite) accès en écriture.

-2voto

Nadir SOUALEM Points 2034

Visual Studio invoque l'éditeur de liens LINK.exe ; il travaille principalement avec des fichiers d'objets en entrée, pour produire un exécutable en sortie, mais il est également capable de beaucoup d'autres travaux concernant ces fichiers et les fichiers connexes. Syntaxe de la ligne de commande du linker @ MSDN

-2voto

Klaim Points 24511

Les instances de modèles (et d'autres types de code) peuvent générer du code (ou pas dans certaines conditions).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X