Que signifie "# pragma comment"?

Que signifie #pragma comment dans ce qui suit?

#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
140
demandé sur Guy Avraham 2010-08-14 21:44:06

4 réponses

#pragma comment est une directive du compilateur qui indique Visual C++ pour laisser un commentaire dans le fichier objet généré. Le commentaire peut ensuite être lu par l'éditeur de liens lorsqu'il traite des fichiers objet.

#pragma comment(lib, libname) indique à l'éditeur de liens pour ajouter le "libname" bibliothèque à la liste des dépendances de la bibliothèque, comme si tu l'avais ajouté dans les propriétés du projet à Linker->Input->Additional dependencies

Voir #pragma commentaire sur MSDN

148
répondu KeatsPeeks 2014-06-21 17:32:43

Je les ai toujours appelés " directives du compilateur."Ils dirigent le compilateur pour faire des choses, brancher, y compris des libs comme indiqué ci-dessus, désactiver des erreurs spécifiques, etc. pendant la phase de compilation.

Les sociétés de compilateurs créent généralement leurs propres extensions pour faciliter leurs fonctionnalités. Par exemple, (je crois) Microsoft a commencé l'affaire "# pragma once " et c'était seulement dans les produits MS, maintenant je ne suis pas si sûr.

Directives Pragma Il comprend les "#pragma commentaire" dans la de table, vous verrez.

HTH

Je soupçonne GCC, par exemple, a son propre ensemble de # pragma.

4
répondu JustBoo 2018-07-17 04:40:02

Ces liens dans les bibliothèques sélectionnées dans MSVC++.

0
répondu bobobobo 2010-08-14 17:46:03

Les directives Pragma spécifient les options du compilateur spécifiques au système d'exploitation ou à la machine (x86 ou x64, etc.). Il ya plusieurs options disponibles. Les détails peuvent être trouvés dans https://msdn.microsoft.com/en-us/library/d9x1s805.aspx

#pragma comment( comment-type [,"commentstring"] ) a ce format.

Voir https://msdn.microsoft.com/en-us/library/7f0aews7.aspx pour plus de détails sur le type de commentaire différent.

#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")

Les lignes de code ci-dessus incluent les noms de bibliothèque (ou chemin) qui doivent être recherché par l'éditeur de liens. Ces détails sont inclus dans l'enregistrement de recherche de bibliothèque dans l'objet fichier.

Donc, dans ce cas, kernel.lib et user32.lib sont recherchés par l'éditeur de liens et inclus dans l'exécutable final.

0
répondu Shrikanth N 2018-07-17 07:48:17