Friday, 15 July 2011

c++ - In Xcode, when I include <iostream>, it seems that stdlib.h is also include. Why? -


मैं Xcode का उपयोग करते समय iostream के शामिल होने के बारे में सवाल है।

iostream के शामिल होने के बाद, ऐसा लगता है कि stdlib.h स्वचालित रूप से भी शामिल है क्योंकि जब मैं " मर्ज " लिखता हूं, Xcode के कोड समापन मुझे " मर्जर्सोर्ट " फ़ंक्शन देता है जो कि stdlib.h में Xcode के दस्तावेज के अनुसार है । लेकिन मैंने stdlib.h स्पष्ट रूप से शामिल नहीं किया है इसलिए मुझे लगता है कि यह iostream के शामिल है जिसमें stdlib.h शामिल है। कोई भी मुझे क्यों बता सकता है?

सी मानक के अनुसार, stdlib.h में विलय की तरह कोई फ़ंक्शन नहीं है, क्यों Xcode में, stdlib.h में ऐसा कोई फ़ंक्शन? क्या इसका मतलब यह है कि Xcode में stdlib.h मानक नहीं है?

मैं प्रत्येक हेडर फ़ाइल की निर्भरता नक्शा कैसे प्राप्त कर सकता हूं , उदाहरण के लिए, शीर्ष लेख फ़ाइल example.h के लिए, मैं कैसे जान सकता हूं कि अन्य .h फाइलों को इस exemple.h में शामिल किया गया है, और जो अन्य .h फाइलों में फ़ाइल exemple.h शामिल हैं।

इस लंबे प्रश्न के लिए क्षमा करें, आपके उत्तर के लिए बहुत बहुत धन्यवाद!

संक्षेप में: यह कार्यान्वयन-परिभाषित।

जिसका अर्थ यह विशेष मानक पुस्तकालय कार्यान्वयन पर निर्भर करता है। मानक स्पष्ट रूप से मानक पुस्तकालय हेडर को अन्य मानक लाइब्रेरी हेडर (या कम से कम उन में प्रतीकों को परिभाषित करने) को शामिल करने की अनुमति देता है; सी ++ 11 17.6.5.2/1:

एक सी + हेडर में अन्य सी + हेडर शामिल हो सकते हैं एक C + + हेडर घोषणाओं और परिभाषाओं को प्रस्तुत करेगा जो इसके सारांश में प्रकट होते हैं। अन्य सी + हेडर सहित इसकी सारांश में दिखाए गए C ++ हेडर उन घोषणाओं और परिभाषाओं को प्रदान करेंगे जो उन अन्य शीर्षलेखों के सारांश में दिखाई देते हैं।

अपने कोड को पोर्टेबल रखने के लिए (भले ही केवल संस्करणों के बीच में एक ही संकलक / मानक पुस्तकालय का), आपको इन नियमों का पालन करना चाहिए:

  1. पारगमन पर भरोसा मत करना भी शामिल है हमेशा स्पष्ट रूप से उन सभी हेडरों को शामिल करें जिनमें आप की आवश्यकता होती है।

  2. पारगमन से आश्चर्यचकित न हों वे कानूनी हैं।


No comments:

Post a Comment