2011-05-24 7 views
11

मैं एक पोर्टेबल सी ++ एप्लिकेशन लिख रहा हूं। ऑपरेटिंग सिस्टम के आधार पर मैं विभिन्न शीर्षलेखों को कैसे शामिल करूं? क्या सी ++ में ऐसा करने का कोई तरीका है या क्या मुझे बिल्ड सिस्टम का उपयोग करना है?मैं अपने ओएस के आधार पर अलग-अलग शीर्षलेख कैसे शामिल करूं?

+0

वहां, ऐसा किया। मुझे याद दिलाने के लिये धन्यवाद। – roshanvid

+0

आपका स्वागत है। लेकिन * कृपया * निर्माण प्रणाली में ऐसा करें, यह आपके सॉफ़्टवेयर को बेहतर बनाए रखने योग्य बनाएगा। यदि मॉड्यूल को प्लेटफॉर्म-स्वतंत्र तरीके से लिखा नहीं जा सकता है (वे प्रायः बूस्ट या क्यूटी जैसे पुस्तकालयों के साथ esp।), तो ओएस सुविधाओं पर अपने स्वयं के अवशोषण तैयार कर सकते हैं और इन कई बार कार्यान्वित कर सकते हैं। –

+0

सभी अच्छे उत्तरों। क्षमा करें अगर मैं स्पष्ट बता रहा हूं लेकिन ध्यान में रखता हूं कि आमतौर पर क्रॉस-प्लेटफार्म वाले हेडर और पुस्तकालयों का पक्ष लेने का अच्छा विचार है। किसी भी समय [सी ++ मानक लाइब्रेरी] (http://en.wikipedia.org/wiki/C%2B%2B_standard_library) की आपको आवश्यकता होती है, खुद से पूछें कि आप एक विकल्प क्यों चुनेंगे। –

उत्तर

10
पूर्वप्रक्रमक साथ

:

#ifdef _SUNOS 
//code 
#elseif _LINUX 
//code 
#elseif _HPUX 
//code 
#elseif _WIN32 
//code 
#else 
#error OS not supported 
#endif 
+0

यहां एक [पूर्वनिर्धारित मैक्रोज़ की सूची] है (http://predef.sourceforge.net/preos.html)। – roshanvid

+0

@ c0smikdebris: धन्यवाद :) – BlackBear

+0

ध्यान दें कि _WIN32 को 32-बिट और 64-बिट विंडोज दोनों पर परिभाषित किया गया है। – user763305

4

हम लिनक्स (रेड हैट एंटरप्राइज 5), रवि (Solaris) और Windows पर विकसित करना।

#ifndef MSWINDOWS 
#include <unistd.h> 
#else 
#include <winbase.h> 
#endif 
//More includes here 
8

मैं पूर्वप्रक्रमक निर्देशों और एक पार मंच का निर्माण प्रणाली जैसे CMake का प्रयोग करेंगे: हमारी प्रणाली कुछ इस तरह का प्रयोग है। आप कर सकता है: -DLINUX:

#ifdef LINUX 
#include <unistd.h> 
#elif defined(WINDOWS) 
#include <algorithm.h> 
# elif Defined(MAC_OSX) 
//... etc. 
#else 
#error No operating system defined 
#endif 

तो जैसे, निर्माण करने के लिए इसी पूर्वप्रक्रमक झंडा जोड़ें।

+0

मुझे लगता है कि यह एक अच्छा विचार है। हाल ही में संकलक द्वारा उपयोग की जाने वाली परिभाषाओं का उपयोग करके ऐसा करने की कोशिश की लेकिन मैंने छोड़ दिया, इतने सारे बदलाव हैं और क्या नहीं। मुझे बिल्ड सिस्टम द्वारा निर्धारित अपनी खुद की परिभाषा का उपयोग करना आसान लगता है। – Skurmedel

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