J’ai observé des cas de __declspec dans le code que je suis en train de lire. Qu'est-ce que c'est ? Et quand je dois utiliser cette construction ?
Réponses
Trop de publicités?Il est principalement utilisé pour importer des symboles de / exporter des symboles à une bibliothèque partagée (DLL). Les compilateurs Visual C++ et de GCC appuient et
. Autres utilisations (certaines Microsoft seule) sont décrits dans le site Web MSDN.
Un autre exemple pour illustrer l' __declspec mot-clé:
Lorsque vous écrivez un Noyau de Windows Driver, parfois, vous voulez écrire votre propre prologue/épilogue séquences de code à l'aide de code assembleur en ligne, de sorte que vous pouvez déclarer votre fonction avec le nu de l'attribut.
__declspec( naked ) int func( formal_parameters ) {}
Ou
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
Veuillez vous référer à http://msdn.microsoft.com/en-us/library/h5w10wxs(v=vs. 80).aspx
Essentiellement, c'est la façon dont Microsoft présente ses extensions C++, de sorte qu'ils ne seront pas en conflit avec les futures extensions de la norme C++. Avec __declspec, vous pouvez attribuer une fonction ou d'une classe; la signification exacte varie selon la nature de __declspec. __declspec(nu), par exemple, supprime le prologue/épilogue génération (pour les gestionnaires d'interruption, intégrable de code, etc), de __declspec(thread) en fait une variable locale de thread, et ainsi de suite.
La liste complète de __declspec attributs est disponible sur MSDN, et varie selon la version de compilateur et de la plate-forme.