2010-02-27 11 views
38

क्या आप WinMain() फ़ंक्शन में WINAPI शब्द समझा सकते हैं?मुख्य कार्य में "WINAPI" का क्या अर्थ है?

सबसे आसान तरीका में ..

#include <windows.h> 

int -->WINAPI<-- WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    LPSTR lpCmdLine, int nCmdShow) 
{ 
    MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK); 
    return 0; 
} 

यह सिर्फ कुछ Windows फंकी मोड है?

यह क्या करता है? या फिर यह सी ++ सुविधा क्या है जो मुझे अभी तक नहीं मिली है?

उत्तर

43

WINAPI एक मैक्रो है जो __stdcall का मूल्यांकन करता है, जो माइक्रोसॉफ़्ट-विशिष्ट कीवर्ड है जो एक कॉलिंग सम्मेलन निर्दिष्ट करता है जहां कैली स्टैक को साफ करता है। स्टैक को दूषित करने से बचने के लिए फंक्शन के कॉलर और कैली को कॉलिंग कन्वेंशन पर सहमत होना चाहिए।

+2

तो यह इस विशिष्ट स्थान में क्यों है? क्या वे ऊपर मैक्रो एक लाइन नहीं दे सकते? – Pyjong

+3

कॉलिंग कन्वेंशन कीवर्ड रिटर्न प्रकार और फ़ंक्शन नाम के बीच जाता है क्योंकि इस तरह से एक सी कंपाइलर पर काम करने वाले किसी व्यक्ति ने इसे कई साल पहले परिभाषित किया था। मुझे सिंटैक्स के पीछे तर्क नहीं पता है, या यहां तक ​​कि कौन सा संकलक कॉलिंग सम्मेलनों (सीडीईसीएल, पास्कल, फोर्टन इत्यादि) निर्दिष्ट करने का समर्थन करने वाला पहला व्यक्ति था। माइक्रोसॉफ्ट? Borland? जाली? कुछ और? – bk1e

5

यह विंडोज बुला सम्मेलन को निरूपित करने के उद्देश्य से एक मैक्रो परिभाषा है। MSDN से:

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

2

यह विंडोज-विशिष्ट है। यह कॉलिंग सम्मेलन को निर्दिष्ट करता है। WinMain विंडोज द्वारा बुलाया जाता है, और यह सुनिश्चित करता है कि कॉलर और कैली कॉलिंग सम्मेलन पर सहमत हों।

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