जब तुम करोगे
#define _XOPEN_SOURCE <some number>
या
cc -D_XOPEN_SOURCE=<some number>
यह आपके कंपाइलर को एक्स / ओपन और पोसिक्स मानकों में परिभाषित कुछ अतिरिक्त कार्यों के लिए परिभाषाओं को शामिल करने के लिए कहता है।
यह आपको कुछ अतिरिक्त कार्यक्षमता देगा जो अधिकांश हाल ही में UNIX / BSD / Linux सिस्टम पर मौजूद है, लेकिन संभवतः विंडोज जैसे अन्य सिस्टम पर मौजूद नहीं है।
संख्या मानक के विभिन्न संस्करणों को संदर्भित करती है।
आप बता सकते हैं कि आपके द्वारा कॉल किए जाने वाले प्रत्येक फ़ंक्शन के मैन पेज को देखकर आपको किसकी (यदि कोई है) जरूरत है।
उदाहरण के लिए, man strdupकहते हैं:
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
strdup(): _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500
strndup(), strdupa(), strndupa(): _GNU_SOURCE
जिसका अर्थ है कि आपको इनमें से एक को रखना चाहिए:
#define _SVID_SOURCE
#define _BSD_SOURCE
#define _XOPEN_SOURCE 500
#define _XOPEN_SOURCE 600
#define _XOPEN_SOURCE 700
#includeयदि आप उपयोग करना चाहते हैं तो किसी भी एस करने से पहले अपने स्रोत फ़ाइल के शीर्ष पर strdup।
या आप डाल सकते हैं
#define _GNU_SOURCE
इसके बजाय, जो सभी कार्यक्षमता को सक्षम बनाता है, नकारात्मक पक्ष के साथ कि यह सोलारिस, फ्रीबीएसडी, मैक ओएस एक्स आदि पर संकलित नहीं हो सकता है।
यह एक ऐसा करने से पहले प्रत्येक आदमी पृष्ठ की जाँच करने के लिए एक अच्छा विचार है #include, #define,, या एक नया फंक्शन का उपयोग करके क्योंकि कभी-कभी उनके व्यवहार क्या विकल्प के आधार पर बदलता है और #defineइसकी जानकारी है आप के साथ उदाहरण के लिए, basename (3) ।
यह सभी देखें: