2012-03-14 10 views
10

सी ++ में शुद्ध सी और सी के बीच अंतर क्या हैं? और मैं 'क्लीन सी' के बारे में कुछ विवरण जानना चाहता हूं जिस पर लुआ आधारित है। क्या कोई इन सुविधाओं को जानता है?"स्वच्छ सी" क्या है और यह मानक सी से अलग कैसे है?

+0

कृपया पूछने के लिए केवल एक प्रश्न उठाएं। –

+0

शुद्ध सी क्या है? – CppLearner

+0

http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B –

उत्तर

15

स्वच्छ सी एक शब्द Harbison & स्टील पुस्तक (C: A Reference Manual, अप्रेंटिस हॉल) में बनाया गया है। एक सी को क्लीन सी में लिखा जाना कहा जाता है अगर इसे मानक सी कंपाइलर और मानक सी ++ कंपाइलर द्वारा संकलित किया जा सकता है; और इसका निष्पादन दो कंपाइलरों (ऑप्टिमाइज़ेशन के अप्रासंगिक होने के मुद्दों) से अलग देखने योग्य व्यवहार का उत्पादन नहीं करेगा।

+0

@pst "हार्बिसन और स्टील पुस्तक में एक शब्द है" क्या यह संदर्भ नहीं है? – Mysticial

+0

@pst मुझे अपनी एच एंड एस प्रतिलिपि में पृष्ठ संख्या नहीं मिल रही है, लेकिन कई लोग comp.lang.c – ouah

+1

में इस शब्द और एच एंड एस को संदर्भित करते हैं। धारा 1.1.5 _ मानक सी ++ _ (5.5 में पी.5 सी का संस्करण: एआरएम)। – ldav1s

2

जो मुझे सबसे स्पष्ट मानता है वह यह है कि सी ++ में, आपको मॉलोक का रिटर्न वैल्यू डालना होगा। सी ++ में भी structs स्वचालित रूप से टाइप किया गया है।

हमेशा सी कोड के लिए सी संकलक का उपयोग करें, सी ++ नहीं। सी ++ सी

साथ पूरी तरह से संगत नहीं है

कुछ अन्य लोगों के अंतर हो सकता है:

  • सी में, शून्य समारोह की घोषणा(); एक ऐसा फ़ंक्शन घोषित करता है जिसने अपने तर्कों को निर्दिष्ट नहीं किया है, जबकि सी ++ में, शून्य func(); सी शून्य फनक (शून्य) के बराबर है, कोई तर्क नहीं ले रहा है;
  • सी ++ में प्रोटोटाइप की आवश्यकता होती है, जबकि यह आमतौर पर सी में एक चेतावनी होती है;
  • चरित्र स्थिरांक (जैसे 'ए') का प्रकार सी और सी में सी + में int है;
  • स्ट्रिंग अक्षर का प्रकार सी [+ में सी और कॉन्स char [] में सी ++ में है;
  • सी में कुछ वैध परिवर्तनीय नाम, कक्षा की तरह, सी ++ में आरक्षित कीवर्ड हैं।
+0

यह भी देखें http://david.tribble.com/text/ cdiffs.htm – Christoph

+0

इसका क्या अर्थ है कि 'शून्य func()' ने अपने तर्क निर्दिष्ट नहीं किए हैं? व्यावहारिक रूप से इसका उपयोग कैसे किया जा सकता है? –

+0

@VictorZamanian कॉलिंग सम्मेलन आपको क्रैश किए बिना सी में गलत संख्या में तर्क पारित करने की अनुमति देता है। बेशक, यदि कैली आपके "गलत" तर्कों से कुछ खराब करता है, तो यह अनिर्धारित व्यवहार है। आप बस घोषणा कर रहे हैं कि वापसी शून्य है। सी ने इस तरह कुछ चरम मैलापन की अनुमति दी। मुझे लगता है कि आपके द्वारा घोषित किए गए किसी भी तर्क को इस तरह घोषित किया जाएगा कि उसे int में परिवर्तित करने की आवश्यकता होगी। यकीन नहीं है और मुझे वास्तव में इस तरह की सामान्यता की परवाह नहीं है। मैं अपने पैरामीटर घोषित करता हूं। :) – doug65536

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