2012-11-19 10 views
9

के लिए खड़े करता है मैं सी में Win32 एपीआई जानने के लिए शुरू कर दिया है मैंने देखा कि मुख्य कार्यक्या WINAPI

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
LPSTR lpCmdLine, int nCmdShow) { .. } 

की तरह कुछ है कि लेकिन मैं जानता हूँ कि सी में एक समारोह

[ReturnType] [FunctionName] (Args) { .. } 
की तरह है कि

इस मामले में वापसी का प्रकार int है और फ़ंक्शन का नाम WinMain है। तो WINAPI क्या खड़ा है और क्या यह आवश्यक है?

धन्यवाद। :)

उत्तर

12

यह calling convention निर्दिष्ट कर रहा है, जो कार्यों के तर्कों को ढेर पर रखा जाता है और प्रबंधित किया जाता है।

आप कॉलिंग सम्मेलनों को मिश्रण कर सकते हैं, कहें कि क्या आप कुछ बाहरी कोड जैसे विंडोज एपीआई कॉल कर रहे हैं, जब तक कि सभी अपनी अपेक्षाओं के साथ "पृष्ठ" पर हों।

विशिष्ट सी कॉल को सीडीसीएल के नाम से जाना जाता है। सीडीसीएल में कॉलर स्टैक पर धक्का देने वाले तर्कों को साफ़ करता है।

विनापी, जिसे "मानक कॉल" भी कहा जाता है, का अर्थ है कि बुलाया गया कार्य इसके तर्कों के ढेर को साफ करने के लिए ज़िम्मेदार है।

एमएस कंपाइलर _ के साथ एक सीडीईसीएल कॉल उपसर्ग करेगा, जबकि एक WINAPI को अग्रणी _ मिल जाएगा और फ़ंक्शन नामों में उलझन में एक @ {BYTES-NEEDED} फ़ंक्शन नाम पर प्रीपेड किया जाएगा। ऊपर के लिंक से:

call  [email protected] ;WINAPI 
call  _someExample ;cdecl 
+0

+1! –

3

यह "कॉलिंग कन्वेंशन" है, जिसे मैक्रो के रूप में परिभाषित किया गया है #define और __stdcall पर हल करता है।

अधिक on MSDN पढ़ें:

रास्ता नाम से सजाया गया है भाषा पर निर्भर करता है और कैसे संकलक, कि है, समारोह उपलब्ध बनाने के लिए बुला सम्मेलन का निर्देश दिया है। के लिए मानक अंतर-प्रक्रिया कॉलिंग सम्मेलन डीएलएल द्वारा उपयोग किए जाने वाले विंडोज को WinAPI सम्मेलन के रूप में जाना जाता है। यह विंडोज़ हेडर फाइलों में को WINAPI के रूप में परिभाषित किया गया है, जिसे बदले में Win32 घोषणाकर्ता __stdcall का उपयोग करके परिभाषित किया गया है।

+0

मैं समझता हूँ, तुम सर धन्यवाद। कॉलिंग सम्मेलनों के लिंक के लिए – Videron

-3

जीत - विंडोज

एपीआई - एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस

विंडोज एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस

+0

यह सवाल शब्द के बारे में 'विनिपी' कॉलिंग सम्मेलन के बजाय है। – TLama

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^