2011-11-06 21 views
5

क्या ओएस एक्स के संस्करण का पता लगाने के लिए एक पूर्वनिर्धारित सी मैक्रो है? मुझे पता है __APPLE__ और __MACH__ मौजूद हैं, लेकिन वे बाइनरी हैं। क्या __APPLE_CC__ के लिए कोई विशिष्ट मान है जो शेर को इंगित करता है?सी मैक्रो?

विशेष रूप से, शेर शेर में <stdio.h> को getline() की एक परिभाषा को जोड़ कर उसे पता लगाने के लिए किया जाए या नहीं कोड शेर पर संकलन किया गया था या संकलन त्रुटियों को हल करने के लिए नहीं सक्षम होने के लिए अच्छा होगा।

विशेष रूप से, मैं बैश (एक्सकोड के बाहर) में यूनिक्स सी कोड बनाने का जिक्र कर रहा हूं।

+0

* शेर पर * या * चल रहा * संकलन? –

उत्तर

5

Availability.h मैक्रोज़ आपको संकलन- और रन-टाइम संस्करण निर्भरताओं की जांच करने की अनुमति देता है। चर्चा here देखें।

3
/usr/include/AvailabilityMacros.h में

चेक - यह इस तरह के रूप मैक्रो शामिल हैं:

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7 
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER DEPRECATED_ATTRIBUTE 
#else 
    #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER 
#endif 

मैं क्योंकि 'openssl/sha1.h' 'के साथ पदावनत' शेर के लिए जिम्मेदार बताते हैं लथपथ कर दिया गया है, git चेतावनी हो जाता है तो संकलन इस सामग्री में आए बहुतायत।

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