c++ - क्यों एक मैक्रो है जो_tmain परिभाषित करता है?




visual-c++ macros (2)

मैं सी ++ कोडिंग के लिए नया हूँ, जावा और सी # पृष्ठभूमि से आ रहा है। मैं # बुनियादी परिभाषा के प्रसार के साथ सबसे बुनियादी से शुरू होने से परेशान हूं:

#define _tmain wmain

जब मैं पहली बार सी उम्र की गड़बड़ी सीखा, मुख्य समारोह था:

int main(int argc, char *argv[])

विजुअल सी ++ प्रोजेक्ट में मैंने इसे बनाया, मुख्य फ़ंक्शन बनाया:

int _tmain(int argc, _TCHAR* argv[])

मैं बस सोच रहा हूं कि क्यों wmain से wmain नाम का नाम होना आवश्यक है? क्यों न केवल मूल सी main फ़ंक्शन प्रोटोटाइप का उपयोग करें?

सामान्य तौर पर ऐसा लगता है कि # को परिभाषित करने के लिए बहुत कुछ है, जो कि शुरू से ही स्पष्ट दिखता है, कुछ ऐसा है जो अधिक रहस्यमय और कम स्पष्ट दिखता है (मेरा मतलब है wmain लिए क्या है ??)

क्या एक बहुत स्पष्ट सवाल हो सकता है सहन करने के लिए धन्यवाद


चूंकि माइक्रोसॉफ्ट ने तय किया है कि सी ++ में यूनिकोड समर्थन जोड़ने का सबसे अच्छा तरीका एक TCHAR प्रकार जोड़ना था, जो कि परियोजना गुणों> कॉन्फ़िगरेशन गुण> जनरल> कैरेक्टर सेट के मूल्य के आधार पर या तो char या wchar_t लिए परिभाषित है wmain या तो main (जो char एस लेता है) या wmain (जो wchar_t लेता है) को उस सेटिंग के आधार पर परिभाषित किया जाता है


यह एक दृश्य सी ++ - विशेष सुविधा है, यह सी ++ का एक हिस्सा नहीं है

अधिकांश विंडोज एपीआई फ़ंक्शंस में दो संस्करण हैं: जो कि W में समाप्त होते हैं, जो कि व्यापक वर्ण स्ट्रिंग्स ( wchar_t स्ट्रिंग्स) और A में समाप्त होने वाले उपयोग के लिए हैं, जो संकीर्ण अक्षर स्ट्रिंग्स ( char स्ट्रिंग्स) के साथ उपयोग के लिए हैं। वास्तविक विंडोज़ एपीआई "फ़ंक्शंस" में कोई प्रत्यय नहीं है और मैक्रोज़ के रूप में परिभाषित किया गया है जो सेटिंग्स के आधार पर सही संस्करण में फैलता है।

T नाम (जैसे _TCHAR और _TCHAR ) एक ही प्रयोजन के लिए हैं: वे मैक्रोज़ हैं जो आपके संकलन सेटिंग्स के आधार पर सही नाम तक विस्तृत होते हैं, इसलिए विस्तृत वर्ण समर्थन के लिए wchar_t और wmain , या char और संकीर्ण वर्ण समर्थन के लिए main

यह विचार यह है कि यदि आप अपने कोड को वर्ण-प्रकार-अज्ञेयवादी नाम ( T नाम) का उपयोग करते हुए लिखते हैं, तो आप इसे बदलने के बिना संकीर्ण अक्षर (एएससीआईआई) या विस्तृत वर्ण (यूनिकोड) का उपयोग करने के लिए अपना कोड संकलित कर सकते हैं। व्यापार का मतलब यह है कि आपका कोड कम पोर्टेबल है





tchar