मैं वर्तमान में कोड में popen
फ़ंक्शन का उपयोग कर रहा हूं जो दो कंपाइलर्स द्वारा संकलित किया गया है: एमएस विजुअल स्टूडियो और जीसीसी (लिनक्स पर)। मैं बाद में जीसीसी (मिनजीडब्ल्यू पर) जोड़ना चाहता हूं।मंच पर निर्भर करता है फ़ंक्शन नाम का चयन करने का सबसे मानक तरीका?
समारोह जीसीसी के लिए popen
कहा जाता है, लेकिन MSVS के लिए _popen
, इसलिए मैं अपने स्रोत कोड के लिए निम्न कहा:
#ifdef _MSC_VER
#define popen _popen
#define pclose _pclose
#endif
यह काम करता है, लेकिन मैं समझने के लिए के लिए एक मानक समाधान वहाँ मौजूद है या नहीं चाहते हैं ऐसी समस्याएं (मुझे stricmp
/strcasecmp
के साथ एक समान मामला याद है)।
_MSC_VER
सही ध्वज पर निर्भर है: विशेष रूप से, मैं समझने के लिए निम्नलिखित चाहते हैं? मैंने इसे चुना क्योंकि मुझे लगता है कि लिनक्स पर्यावरण "अधिक मानक" है।- यदि मैं कुछ हेडर फ़ाइल में इन
#define
को डालता हूं, तो क्या यह महत्वपूर्ण है कि (popen
के मामले में) से पहले या#include
है? - यदि
_popen
को मैक्रो के रूप में परिभाषित किया गया है, तो क्या मेरे पास#define
विफल हो जाएगा? क्या मुझे उस कारण या किसी अन्य कारण के लिएmy_popen
जैसे "नया" टोकन का उपयोग करना चाहिए? - क्या कोई पहले से ही मेरे लिए यह काम करता है और एक अच्छा "पोर्टेबिलिटी हेडर" फ़ाइल बनाता है जिसे मैं उपयोग कर सकता हूं?
- मुझे और कुछ भी पता होना चाहिए?