2010-03-04 11 views
15

मैं विंडोज़ प्लेटफॉर्म एसडीके हेडर फाइलों (क्या जीवन, सही?) के माध्यम से ब्राउज़ कर रहा था, और मैंने देखा कि कई स्थानों में प्रीप्रोसेसर प्रतीक _MAC के संदर्भ शामिल हैं। उदाहरण के लिए:विंडोज हेडर फाइलों में "#ifdef _MAC" के साथ क्या है?

// WinUser.h line 1568 
/* 
* Message structure 
*/ 
typedef struct tagMSG { 
    HWND  hwnd; 
    UINT  message; 
    WPARAM  wParam; 
    LPARAM  lParam; 
    DWORD  time; 
    POINT  pt; 
#ifdef _MAC 
    DWORD  lPrivate; 
#endif 
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG; 

क्या इसका मतलब है "मैकिंतोश", जैसा कि ऐसा प्रतीत होता है? क्या ऐसा समय था जहां विंडोज़ या विंडोज़ का सबसेट मैकिंतोश के लिए संकलित किया जा सकता था?

उत्तर

13

एक बार माइक्रोसॉफ्ट दुनिया में मैकिंतोश सॉफ्टवेयर का सबसे बड़ा डेवलपर था। एक्सेल और वर्ड ने मैकिंटोश पर अपने संबंधित बाजारों पर हावी रही, और बाद में कार्यालय भी किया। तो यह आश्चर्य की बात नहीं है कि एमएस में एप्लिकेशन डिवीजन विंडोज हेडर फाइलों का एक सबसेट चाहता है जो मैक पर काम करता है - ताकि उनके क्रॉस प्लेटफ़ॉर्म सॉफ़्टवेयर को बनाए रखा जा सके।

लेकिन मैकिंटोश पर चलने वाले विंडोज ओएस का कोई भी संस्करण कभी नहीं था।

किसी भी मामले में, इस टुकड़ा objidl.h से है, यह बताने के _MAC वास्तव में क्या मतलब है लबादा में हेडर फाइल हालांकि लगता है ...

//FSSpec is Macintosh only, defined in macos\files.h 
#ifdef _MAC 
    typedef struct tagSTATSTG 
    {      
     LPOLESTR pwcsName; 
      FSSpec *pspec; 
     DWORD type; 
     ULARGE_INTEGER cbSize; 
... 
    } STATSTG; 
#else //_MAC 
3

मुझे लगता है कि यह मैकोज़ के लिए माइक्रोसॉफ्ट सॉफ्टवेयर (ऑफिस, आईई, विंडोज मीडिया प्लेयर) को संकलित करने के लिए इस्तेमाल किया गया था। मुझे पता है कि सोलारिस के लिए आईई और डब्ल्यूएमपी ने विंडोज़ के एक सबसेट (उदा। Libwinnt.so, libkernel32.so) को संबंधित विंडोज डीएलएल के लिए प्रत्यक्ष प्रतिस्थापन के रूप में शामिल किया था।

+0

विंडोज़ के लिए आईट्यून्स को देखते समय, जैसा कि आप '.plist' फ़ाइलों का एक समूह देखते हैं और' फाउंडेशन.फ्रेमवर्क 'या इसी तरह के आईआईआरसी कहते हैं। – asveikau

+0

@asveikau: ज़रूर।विंडोज के लिए कई ऐप्पल उत्पाद मैकोज़ को भी लाते हैं और उनके साथ महसूस करते हैं (जैसे सोलार्स के लिए माइक्रोसॉफ्ट उत्पादों के रूप में), तो मुझे लगता है कि वे इसे दूसरी तरफ करते हैं और विंडोज़ के आसपास एक रैपर के रूप में एपीआई जैसे मैकोज़ प्रदान करते हैं। – jarnbjo

+0

@jarnbjo वास्तव में, इन ओबीजेसी पुस्तकालयों के लिए यह मैक ओएस एक्स को काफी हद तक पूर्ववत करता है। आईआईआरसी, नेक्स्ट में फाउंडेशन/एपकिट 90 के दशक में एनटी के तहत चल रहा था। – asveikau

1

एमएस कोड के बहुत सारे मैक के संदर्भ में हैं क्योंकि वे मैक के लिए भी विकसित होते हैं - उदाहरण के लिए कार्यालय। शायद हेडर फ़ाइल का यह बिट उन टीमों से आया था।

+4

कार्यालय * कार्यालय नहीं। (मैं आपको देख रहा हूं, जो लोग जावा को अपने रिज्यूमे पर डालते हैं ...) –

+0

बस उत्तर बांध संपादित करें :-) –

8

के रूप में दूसरों का उल्लेख किया है, माइक्रोसॉफ्ट क्षुधा पर वापस पोर्ट गया मैक, और उन्हें शायद अंतर्निहित एपीआई/ढांचे को एक पोर्टेबल एब्स्ट्रक्शन लेयर में बदलना आसान हो गया, बजाय ऐप्स को फिर से लिखना ... जैसे कि क्विकटाइम टीम ने विपरीत दिशा में पोर्टिंग करते समय (मैक से विंडोज तक - - मैक के कार्बन हेडर में समान #if WIN32 सशर्त हैं)। उदाहरण के लिए, अपने पूरे Win32 ऐप का कोड बेस CreateFile() की तलाश में है और #ifdefs के साथ प्रत्येक संदर्भ को प्रतिस्थापित या सशर्त बनाने के बावजूद, riffle के बजाय, केवल CreateFile() का मैक संस्करण बनाएं और इसके साथ किया जाए। प्रत्येक Win32 API कॉल के लिए दोहराएं।

ऐतिहासिक ट्रिविया का आश्चर्यजनक बिट यह है: माइक्रोसॉफ्ट के पोर्टिंग प्रयास का अंतिम परिणाम "मैकिंटोश के लिए माइक्रोसॉफ्ट विजुअल सी ++ क्रॉस-डेवलपमेंट एडिशन" के रूप में तीसरे पक्ष के लिए उपलब्ध था। तो कोई भी इस Win32 ऐप ले सकता है और इस अमूर्त परत का उपयोग कर इसे मैक पर पोर्ट कर सकता है।

मेरी भरोसेमंद MSDN अक्टूबर 1996 सीडी से

उद्धरण:

"माइक्रोसॉफ्ट विजुअल C++ संस्करण 4.0 पार विकास Macintosh के लिए संस्करण एप्पल के लिए माइक्रोसॉफ्ट विंडोज ऑपरेटिंग वातावरण के लिए कार्यक्रमों के हस्तांतरण 680x0 लबादा या पावर Macintosh पर्यावरण की सुविधा। एक पूर्ण कार्यक्रम विकास वातावरण प्रदान करने के लिए डिज़ाइन किया गया, मैकिंतोश के लिए विजुअल सी ++ सी, मानक सी रन-टाइम लाइब्रेरी, सी ++ का समर्थन करता है, ओएलई और ओडीबीसी और माइक्रोसॉफ्ट फाउंडेशन क्लास लाइब्रेरी सहित अधिकांश माइक्रोसॉफ्ट विन 32 एपीआई। "

तो इसमें एमएफसी भी शामिल है। मेरा अनुमान है कि कोई भी "#ifdef _MAC" मैकिंतोश (आरआईपी) के लिए एमएसवीसी ++ क्रॉस-डेवलपमेंट संस्करण का एक आर्टिफैक्ट है।

+0

इतिहास का अच्छा सा, धन्यवाद। – zildjohn01

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