जवाबों:
यह C ++ भाषा का एक Microsoft विशिष्ट एक्सटेंशन है जो आपको भंडारण वर्ग की जानकारी के साथ एक प्रकार या फ़ंक्शन को विशेषता देता है।
प्रलेखन
विहित उदाहरण हैं __declspec(dllimport)और __declspec(dllexport), जो लिंकर को आयात करने और निर्यात करने का निर्देश देते हैं (क्रमशः) एक DLL से या एक प्रतीक।
// header
__declspec(dllimport) void foo();
// code - this calls foo() somewhere in a DLL
foo();
( __declspec(..)बस माइक्रोसॉफ्ट के विशिष्ट सामान को लपेटता है - संगतता प्राप्त करने के लिए, एक आम तौर पर इसे मैक्रोज़ के साथ लपेट देगा)
.libयह पता लगाएगा कि एक मिलान निर्यात प्रतीक है।
__Declspec कीवर्ड का उदाहरण देने के लिए एक और उदाहरण :
जब आप विंडोज कर्नेल ड्राइवर लिख रहे हैं, तो कभी-कभी आप इनलाइन असेंबलर कोड का उपयोग करके अपने स्वयं के प्रोलॉग / एपिलॉग कोड अनुक्रम लिखना चाहते हैं , ताकि आप अपने फ़ंक्शन को नग्न विशेषता के साथ घोषित कर सकें ।
__declspec( naked ) int func( formal_parameters ) {}
या
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
कृपया नग्न (C ++) देखें
अनिवार्य रूप से, यह वह तरीका है जिससे Microsoft अपने C ++ एक्सटेंशन का परिचय देता है ताकि वे मानक C ++ के भविष्य के एक्सटेंशन के साथ संघर्ष न करें। __Declspec के साथ, आप एक फ़ंक्शन या क्लास को विशेषता दे सकते हैं; सटीक अर्थ __declspec की प्रकृति के आधार पर भिन्न होता है। __declspec (नग्न), उदाहरण के लिए, प्रोलॉग / एपिलॉग जनरेशन को दबाता है (इंटरप्ट हैंडलर, एम्बेड करने योग्य कोड आदि के लिए), __declspec (थ्रेड) एक वैरिएबल थ्रेड-लोकल बनाता है, और इसी तरह।
__Declspec विशेषताओं की पूरी सूची MSDN पर उपलब्ध है, और संकलक संस्करण और प्लेटफ़ॉर्म द्वारा भिन्न होती है।
GCC 4.2उनके लिए, इसके अलावा में है कि प्रस्ताव विकल्प __attribute__ ((dllexport))के लिए __declspec(dllexport), यह उचित कॉल करने के लिए है __declspec, एक माइक्रोसॉफ्ट केवल विस्तार?
मुझे पता है कि यह आठ साल हो गया है, लेकिन मैं MRuby में पाए गए कोड के इस टुकड़े को साझा करना चाहता था जो दिखाता है कि __declspec()मधुमक्खी का उपयोग उसी स्तर पर कैसे किया जा सकता है export keyword।
/** Declare a public MRuby API function. */
#if defined(MRB_BUILD_AS_DLL)
#if defined(MRB_CORE) || defined(MRB_LIB)
# define MRB_API __declspec(dllexport)
#else
# define MRB_API __declspec(dllimport)
#endif
#else
# define MRB_API extern
#endif
__declspec(dllexport)आपकी लायब्रेरी में प्रत्येक कार्य से पहले