2010-12-30 7 views
7

मुझे विभिन्न सी विनिर्देशों से संबंधित कई चीजों के बारे में संदेह है।सी 99 कोड के साथ सी 8 9 कोड मिश्रण करना संभव है?

यदि मैं सी 99 में लाइब्रेरी प्रोग्राम करता हूं, तो क्या मैं इसे C89 कोड से उपयोग कर सकता हूं? (केवल C89 अनुपालन परिभाषाओं के साथ कार्यों का उपयोग कर)।

उदाहरण, यह कोड C89 में उपयोग योग्य होगा? किसी साझा लाइब्रेरी की

हैडर:

 

#ifdef C99 
void func (double complex a, double complex b); // C99 function 
#endif 

/* another C89 compliant function */ 
void func2 (double a, double b); 
 

अग्रिम धन्यवाद :)

+0

संभवतः जब तक आप सही ढंग से C99' परिभाषित करते हैं। Http://stackoverflow.com/questions/2115867/is-there-a-define-for-c99 – BoltClock

+0

देखें "जटिल" क्या है? –

+0

@ बोल्टक्लॉक मैंने इसे देखा: पी, लेकिन मेरा प्रश्न सी 8 9 कार्यक्रमों के साथ सी 99 पुस्तकालयों की बाइनरी संगतता के लिए अधिक उन्मुख है। – castarco

उत्तर

7

सी भाषा C89 और C99 कोड की दोहरी संगतता के बारे में कुछ नहीं कहा। यह पूरी तरह से निष्पादन योग्य के विभिन्न हिस्सों के लिए उपयोग किए जाने वाले कंपाइलरों तक है।

यदि आप अपने पुस्तकालय के बाहरी शीर्षलेख को C89 कंपाइलर के लिए palatable बना सकते हैं, तो मुझे यह सुनिश्चित करने के सामान्य कारण को छोड़कर कोई स्पष्ट कारण नहीं दिखता है कि दो कंपाइलर संगत कोड उत्पन्न कर सकते हैं।

+0

यह सही उत्तर है। – Joshua

2

#ifdef C99 के बजाय, #if __STDC_VERSION__ > 199900L या इसी तरह का उपयोग करें।

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