2009-02-18 11 views

उत्तर

12

अच्छा, एक व्यावहारिक अंतर यह होगा कि WCHAR मेरे प्लेटफ़ॉर्म पर मौजूद नहीं है। केवल विंडोज़ के लिए (और प्रोग्राम को किसी अन्य प्लेटफ़ॉर्म पर पोर्ट करने का कोई इरादा नहीं है) और आवश्यक शीर्षलेखों के साथ, यह वही है (WCHAR केवल typedef है)।

0

व्यावहारिक रूप से बोलने में बहुत अंतर नहीं है। वे दोनों एक ही अंतर्निहित प्रकार का प्रतिनिधित्व करते हैं। एक 2 बाइट चौड़ाई मूल्य।

LibT शीघ्र ही पर होगा आप विभिन्न प्लेटफार्मों एक सी ++ मानक :)

+2

के लिए wcslen आदि कार्यों पर ध्यान देना यह महत्वपूर्ण है यह केवल विंडोज़ पर मान्य है। WCHAR एक विंडोज-विशिष्ट टाइपिफ़ है (या यह # परिभाषित है?), और आकार (wchar_t) प्लेटफॉर्म पर निर्भर करता है। लिनक्स (और, आईआईआरसी, सोलारिस) पर, उदाहरण के लिए, यह 4 बाइट्स है। –

15

wchar_t अलग प्रकार, सी ++ मानक द्वारा परिभाषित है के बीच असली पागल मतभेद देने के लिए।

WCHARगैर मानक है, और जहां तक ​​मुझे पता है, केवल विंडोज़ पर मौजूद है। हालांकि, यह wchar_t के लिए बस typedef (या संभवतः एक मैक्रो) है, इसलिए यह कोई व्यावहारिक अंतर नहीं बनाता है। MSVC की

पुराने संस्करण wchar_t के रूप में नहीं था एक प्रथम श्रेणी प्रकार- बजाय यह बस एक typedefshort

लिए किया गया था सबसे अधिक संभावना, माइक्रोसॉफ्ट शुरू की WCHAR किसी भी संकलक संस्करण भर में एक "विस्तृत चरित्र प्रकार" का प्रतिनिधित्व करने, wchar_t मूल प्रकार के रूप में मौजूद था या नहीं।

हालांकि आपको अपने कोड में wchar_t का उपयोग करना चाहिए। यही वह है।

4

क्या कोई जानता है कि WCHAR कितना पुराना है? मुझे लगता है कि यह कम से कम विंडोज एनटी 3.1 की तारीख है। मैं अनुमान लगाता हूं कि जब माइक्रोसॉफ्ट ने विंडोज हेडर में WCHAR का उपयोग शुरू किया, तो wchar_t या तो सी या सी ++ मानक में परिभाषित नहीं किया गया था। कृपया मुझे सुधारें अगर मैं गलत हूं।

माइक्रोसॉफ्ट घोषणाओं और शीर्षकों का समर्थन करने की अपरिहार्य स्थिति में है कि ए) सी और सी ++ में काम करना चाहिए; बी) बहुत अलग आर्किटेक्चर (i86, एमआईपीएस, पावरपीसी, अल्फा, ...) के तहत संकलित करें और सी) 15+ वर्ष पुराने कंपाइलर्स के लिए लिखे गए स्रोत कोड के साथ पीछे-संगत होना चाहिए। इसके अलावा, पिछले दो दशकों में प्रकाशित किसी भी ब्रेकिंग चेंज और हजारों किताबें, संदर्भ मैनुअल, ऑनलाइन दस्तावेज इत्यादि अचानक अचानक गलत हो जाएंगी।

WCHAR एक इंटरफेस है-एक बार प्रकाशित होने के बाद इसे पत्थर में लिखा गया था, भले ही इसे नए कोड के लिए जरूरी न हो।

0

typedef wchar_t WCHAR; // शौचालय, 16-बिट यूनिकोड चरित्र

इस winnt.h.So में परिभाषित किया गया है मूल रूप से यह wchar_t WCHAR है.आप wcscat इस्तेमाल किया जा सकता है कि यह करने के लिए abbrivation है, दोनों

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