web-dev-qa-db-fra.com

Que signifie "commentaire #pragma"?

Que signifie #pragma comment dans ce qui suit?

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

#pragma comment est une directive de compilation qui indique à Visual C++ de 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 d'ajouter la bibliothèque 'libname' à la liste des dépendances, comme si vous l'aviez ajoutée dans les propriétés du projet à Linker->Input->Additional dependencies

Voir #pragma comment sur MSDN

158
KeatsPeeks

Je les ai toujours appelées "directives du compilateur". Ils ordonnent au compilateur de faire des choses, de créer des branches, y compris les bibliothèques comme indiqué ci-dessus, de désactiver des erreurs spécifiques, etc. pendant la phase de compilation.

Les compilateurs créent généralement leurs propres extensions pour faciliter leurs fonctionnalités. Par exemple, (je crois), Microsoft a lancé l’entente «#pragma once» et c’était uniquement dans les produits MS. Je n’en suis plus aussi sûre.

Directives Pragma Il inclut "commentaire #pragma" dans le tableau que vous verrez.

HTH

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

4
JustBoo

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

0
bobobobo

Les directives Pragma spécifient les options du compilateur spécifiques au système d'exploitation ou à la machine (x86 ou x64, etc.). Il y a 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. 

Consultez https://msdn.Microsoft.com/en-us/library/7f0aews7.aspx pour plus de détails sur les différents types de commentaires.

#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és par l'éditeur de liens. Ces détails sont inclus dans l’enregistrement de recherche de bibliothèque dans le fichier object

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
Shrikanth N