सी ++ "अनुवाद इकाई" की धारणा को परिभाषित करता है। एक अनुवाद इकाई एक एंकर बिंदु है जहां अनुवाद शुरू होता है, और एक कार्यक्रम में आमतौर पर ऐसी कई अनुवाद इकाइयां शामिल होती हैं। कंपाइलर को कौन सी इकाइयां पास की जाती हैं क्योंकि "अनुवाद इकाई" वास्तव में आपके आईडीई, मेकफ़ाइल पर और अन्य कॉन्फ़िगरेशन की सेटिंग्स पर निर्भर करती है। लेकिन अनौपचारिक रूप से अधिकतर कॉन्फ़िगरेशन आपके .cpp
और .c
- फ़ाइलों को अनुवाद इकाइयों के रूप में लेते हैं।
इसे आसान बनाने के लिए, हम एक अनुवाद इकाई के बारे में सोच सकते हैं, जिसमें से कुछ कंपाइलर बाइनरी बनाता है, और एक लिंकर एक प्रोग्राम में कई बाइनरी जोड़ता है।
तो हेडर फ़ाइलों को आमतौर पर अनुवाद इकाइयों के रूप में कॉन्फ़िगर नहीं किया जाता है, और वे आमतौर पर एक बाइनरी नहीं देते हैं, भले ही उनमें स्रोत कोड हो। उन्हें अनुवाद इकाइयों से आयात करने के बारे में सोचा जाता है और उन्हें उनके साथ संकलित किया जाएगा।
यदि ऐसी हेडर फ़ाइलों में बहुत से स्रोत कोड शामिल हैं, जो कई अनुवाद इकाइयों में शामिल किए जाएंगे, तो यह समझ में आता है कि उन्हें एक बार संकलित करना होगा और एक मध्यवर्ती परिणाम में जितना संभव हो उतना जानकारी रखें, वास्तविक अनुवाद इकाई संकलित करना तेज़ है। यह समय बचाता है, लेकिन "इंटरमीडिएट बाइनरी" कुछ आंतरिक है और खुलासा नहीं है।
हालांकि, सामग्री और स्रोत कोड के प्रकार से, एक हेडर फ़ाइल अन्य स्रोत कोड फ़ाइलों से अलग नहीं है। आप कंपाइलर को अनुवाद इकाई के रूप में "हेडर फ़ाइल" पास कर सकते हैं, और संकलक वास्तव में इसमें से "सामान्य" बाइनरी बना देगा। यह वास्तव में सिर्फ इतना है कि उन्हें आम तौर पर संकलन के लिए रूट के रूप में घोषित नहीं किया जाता है।
उम्मीद है कि मदद करता है।
स्रोत
2017-01-11 07:12:40
गैर-प्रीकंपिल्ड बाइनरी जैसी कोई चीज़ नहीं है, इसलिए 'पूर्व-संकलित बाइनरी' की अवधारणा वास्तव में किसी और चीज की तुलना किसी अन्य चीज़ की तुलना में नहीं है। – EJP
इंगित करने के लिए धन्यवाद ... मुझे लगता है कि इसे पूर्व-संकलित स्रोत – bharath