में 'आयात' जावा में 'आयात' सी/सी ++ में '# अंतर्निहित' जैसा व्यवहार करता है? विशेष रूप से, क्या इसमें संपूर्ण लाइब्रेरी शामिल होगी जो यह आयात कर रही है या क्या इसमें केवल कक्षाओं और विधियों को शामिल किया जाएगा जिन्हें बाद के कोड में कहा जाता है?जावा बनाम '#include' में सी/सी ++
उत्तर
जो वास्तव में आप आयात करते हैं उस पर निर्भर करता है। सबसे छोटी आयात योग्य इकाई वर्ग है, सबसे बड़ा पैकेज है।
तो यदि आपको एक वर्ग की आवश्यकता है और पूरा पैकेज आयात करें तो यह पूरा पैकेज लाएगा।
#include
दोनों में से कोई भी नहीं, न तो "आयात" पुस्तकालय, न ही कक्षाएं या मॉड्यूल।
#include
निर्देश केवल पूर्व-प्रोसेसर को अन्य टेक्स्ट फ़ाइल (स्रोत) की सामग्री को शामिल करने के लिए कहता है। बस इतना ही।
प्री-प्रोसेसिंग फ़ाइल ए #include
आईएनजी फ़ाइल बी का परिणाम कंपाइलर को पास किया गया है जैसे कि वे एक फ़ाइल थे, फ़ाइल बी में उस स्थिति में चिपकाया गया था जहां #include
निर्देश दिया गया था।
स्पष्टीकरण के लिए यह बताएं: यह सब पूर्व किसी भी संकलन, कोड जनरेशन के लिए होता है।
साइड इफेक्ट के रूप में सी/सी ++ प्री-प्रोसेसर का उपयोग कंप्रेसर से स्वतंत्र रूप से किसी भी प्रकार की टेक्स्ट फ़ाइल इनपुट को संसाधित करने के लिए किया जा सकता है।
कोई तर्क दे सकता है कि #include
जैसे प्री-प्रोसेसर स्टेटमेंट्स "सी/सी ++ भाषाओं का वास्तव में हिस्सा नहीं हैं", क्योंकि उन्हें अनिवार्य रूप से सी/सी ++ में किसी भी प्रोग्राम को लिखने की आवश्यकता नहीं है, क्योंकि वे कभी भी कंपाइलर को पास नहीं होते हैं ।
अभिव्यक्ति import
का उपयोग (मानक) सी/सी ++ प्रोग्रामिंग के संदर्भ में नहीं किया जाता है, क्योंकि आयात करने के लिए कुछ भी नहीं है।
C/C++ मॉड्यूल एक साथ या तो डाल रहे हैं स्रोत स्तर पर पहले संकलन करने के लिए या लिंकर संकलन के बाद से।
यह एक अच्छा स्पष्टीकरण समग्र +1 है। यद्यपि कुछ अंक। क्या प्रीप्रोसेसर केवल हेडर फाइलों की प्रतिलिपि नहीं करता है जिसमें केवल फ़ंक्शन प्रोटोटाइप होते हैं और वास्तविक स्रोत फ़ाइलों को लिंक समय पर शामिल किया जाता है? उपरोक्त इसे वास्तविक स्रोतों की तरह ध्वनि बनाते हैं, प्रीप्रोसेसर द्वारा चिपकाया जाता है, जो मुझे विश्वास है कि यह मामला नहीं है। दूसरी बात यह है कि मैं पूछूंगा कि जावा में आयात के मामले में क्या होता है जो अलग है? क्या संकलक पैकेज के इस जोड़े को स्वयं करता है? – fayyazkl
@fayyazkl: लिंकर संकलन के परिणामों से संबंधित है। स्रोत (न तो '*। सी 'और न ही' * .h') निर्माण के इस चरण में अब शामिल हैं। – alk
@fayyazkl: जावा के आयात के तरीके के बारे में, आप यहां पढ़ना चाहेंगे: http://stackoverflow.com/questions/12620369/how-java-import-works – alk
जावा में, जब आप import
उपयोग करते हैं, तो आप या तो आयात:
- एकल वर्ग:
import foo.bar.Baz
- एक पूर्ण पैकेज:
import foo.bar.*
- एक वर्ग के एक भी स्थिर सदस्य:
import static foo.bar.Baz.GRUT
- कक्षा के प्रत्येक स्थिर सदस्य:
import static foo.bar.Baz.*
सी/सी ++ #include
निर्देश प्री-प्रोसेसिंग चरण में होता है और सादे अंग्रेजी में इसका अर्थ है "इस जगह पर संपूर्ण हेडर फ़ाइल (या यदि आपको पसंद है तो कोई भी टेक्स्ट फ़ाइल) पेस्ट करें जो पैरामीटर के रूप में दिया जाता है"। नए सी ++ मानक में मॉड्यूल (अंततः) होंगे, और जावा के आयात के समान हो सकते हैं या नहीं भी हो सकते हैं (यह निर्भर करता है कि यह कैसे कार्यान्वित किया जा रहा है)। इस सी ++ प्रस्ताव के बारे में अधिक जानकारी: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3347.pdf
जावा 8 मॉड्यूलर प्रोग्रामिंग के लिए भी समर्थन में सुधार करेगा।देखें: http://openjdk.java.net/projects/jigsaw/
'# शामिल है 'संकलन समय पर खुश नहीं है, लेकिन ** पहले ** संकलन के लिए। – alk
मैं इस बारे में विवरण नहीं चाहता था कि सी/सी ++ कंपाइलर स्रोत को कैसे संसाधित करता है, जो पूरी तरह से ऑफ-विषय होगा। क्या आप सहमत हैं? अभी भी टिप्पणी उचित है, तो +1। – DejanLekic
जावा के 'आयात' कथन और सी/सी ++ के '# शामिल 'निर्देश (ओपी द्वारा पूछे जाने वाले प्रश्न) के बीच अंतर खोजने के संदर्भ में मुझे नहीं लगता कि यह ऑफ-विषय है कि सी/सी ++ प्री-प्रोसेसर किसी संकलन या कोड जनरेशन का हिस्सा नहीं है, लेकिन उल्लेख करने के लिए एक आवश्यक तथ्य है। – alk
मुझे लगता है कि एक पहलू यह है कि अन्य उत्तर ग के बारे में साफ नहीं हो सकता है,
ग में शामिल केवल प्रतियां पूर्वप्रक्रमक चरण जो समारोह प्रोटोटाइप, ज्यादा कुछ नहीं होता है में हेडर फाइल। मूल फ़ंक्शन परिभाषा अभी भी लिंक कोड पर स्थित है, मूल कोड संकलन के बाद।
एक हेडर फ़ाइल समेत एक सरल सत्यापन किया जा सकता है, लेकिन स्रोत फ़ाइल नहीं और फ़ंक्शन को आपके कोड से कॉल करना। कोई संकलन त्रुटि नहीं होगी और केवल लिंक समय पर यह शिकायत करेगा कि परिभाषा परिभाषित करने में सक्षम नहीं है।
आमतौर पर सी, सी ++ लैंग को संदर्भित करता है, जहां वे प्लेटफॉर्म आश्रित भाषाओं के हैं और उन्हें सीधे आर्किटेक्चर के मशीन निर्देश सेट पर संकलित, लिंक और लोड करने की आवश्यकता है, लेकिन जहां आयात जावा लैंग को संदर्भित करता है, यह है मंच के स्वतंत्र, जहां यह बाइट कोड उत्पन्न कर सकता है और फिर इसे बाइनरी कोड प्रारूप में व्याख्या किया जा सकता है।
सवाल "सी/सी +" बनाम "जावा" नहीं था। – alk
#include<stdio.h>
मतलब है, इस फ़ाइल में stdio.h की सामग्री की प्रतिलिपि जबकि import java.util.ArrayList
का मतलब है अगर तुम cann't ऊपर उल्लेख आयात स्थान में इस फ़ाइल नज़र में एक वर्ग के हैं। जावा आयात आपकी फ़ाइल के आकार में वृद्धि नहीं करता है, यह केवल कुछ कीस्ट्रोक बचाता है।
धन्यवाद। यही वह था जिसे मैं ढूंढ रहा था। – h8pathak
आयात (जावा में) का उपयोग करने के समान है (सी ++ में) - जैसा कि आप समझते हैं कि वे बिल्कुल समान नहीं हैं, लेकिन बहुत समान हैं।
आयात कंपाइलर को इंगित करना है जहां यह वर्तमान वर्ग में उपयोग की जाने वाली कक्षा (या उप पैकेज) पा सकता है।
में शामिल हैं - स्वेन बेहतर यहाँ समझाया - https://stackoverflow.com/a/3739563/135553
- 1. सीसी
- 2. सीसी
- 3. ईएसएस/एमैक्स में, मैं सीसी सीजे या सीसी सीआर
- 4. मेल सीसी
- 5. कॉल/सीसी
- 6. सीसी .NET
- 7. स्कैला में "कॉल-सीसी" पैटर्न?
- 8. कॉल/सीसी क्या है?
- 9. पीएचपी मेल, सीसी फील्ड
- 10. mountainlion अप्रैल के रूप में इस 'सीसी' कमी
- 11. सी ++: नेमस्पेस और #include
- 12. LINQ ".Include" सबक्वेरी
- 13. C#include फ़ाइल नाम
- 14. मेकफ़ाइल में सीसी? = क्या मतलब है?
- 15. <include> टैग में लेआउट_वेट विशेषता
- 16. एंड्रॉइड में सी ++ बनाम जावा
- 17. जावा में डबल बनाम डबलव्यू
- 18. फ्लोट बनाम डबल (जावा में)
- 19. जावा में जेपीनल बनाम जेएफआरएम
- 20. जावा बनाम सी ++ में बिल्डर्स?
- 21. लिनक्स कर्नेल संकलित करते समय सीसी, एलडी और सीसी [एम] आउटपुट जैसे कोड क्या हैं?
- 22. जावा में स्कैला बनाम क्लोजर में बंद
- 23. एफएफएमपीजी चार सीसी एवी कोडेक समर्थन सूची?
- 24. यह जावास्क्रिप्ट वाक्यविन्यास क्या है: {सीआई, सीसी}?
- 25. पीट में डीपी और सीसी कैसे बदलते हैं?
- 26. मेकफ़ाइल में सीसी और एलडी क्या खड़े हैं?
- 27. जावा कोड obfuscation वास्तव में प्रभावी बनाम decompilers बनाम है?
- 28. सूची बनाम कतार बनाम जावा में संग्रहों का सेट
- 29. जावाएफएक्स नेस्टेड कंट्रोलर (एफएक्सएमएल <include>)
- 30. जावा बनाम सी
वास्तविक स्रोत केवल लिंक समय में जुड़ा हुआ है। प्रीप्रोसेसर प्रोटोटाइप युक्त केवल हेडर फाइलों को प्रतिस्थापित करता है। कृपया मेरा उत्तर भी देखें http://stackoverflow.com/a/19581919/986760 – fayyazkl