2014-12-24 10 views
11

ऐसी चीज नहीं है और यह नवीनतम सी ++ मसौदे में बताया गया है:'बाहरी इनलाइन' फ़ंक्शन और कब उपयोग करना है?

§ 7.1.2 .4 में:

एक इनलाइन समारोह हर अनुवाद इकाई में परिभाषित किया जाएगा जो में यह है ओडीआर रूप से प्रयुक्त और प्रत्येक मामले (3.2) में बिल्कुल वही परिभाषा होगी। [नोट: अनुवाद इकाई में इसकी परिभाषा प्रकट होने से पहले इनलाइन फ़ंक्शन पर कॉल का सामना किया जा सकता है। - अंत नोट] यदि किसी फ़ंक्शन की परिभाषा एक अनुवाद इकाई में से पहले घोषणा के रूप में पहली घोषणा में दिखाई देती है, तो कार्यक्रम खराब हो गया है। बाहरी लिंकेज के साथ एक समारोह एक अनुवाद इकाई में इनलाइन घोषित किया जाता है, तो यह जिसमें ऐसा लगता है सभी अनुवाद इकाइयों में इनलाइन घोषित किया जाएगा; कोई निदान की आवश्यकता नहीं है। बाहरी लिंकेज के साथ एक इनलाइन फ़ंक्शन सभी अनुवाद इकाइयों में एक ही पता होगा। एक बाहरी स्थानीय एक बाहरी इनलाइन फ़ंक्शन में चर हमेशा एक ही ऑब्जेक्ट को संदर्भित करता है। एक बाहरी इनलाइन फ़ंक्शन के शरीर के भीतर परिभाषित एक प्रकार प्रत्येक अनुवाद इकाई में एक ही प्रकार है।

इस पर कुछ अंतर्दृष्टि और इसका उपयोग कब किया जाए?

+0

हो सकता है कि एक लिंक समय अनुकूलन संकेत? – leppie

उत्तर

3

extern फ़ंक्शंस के लिए अनावश्यक है, इसलिए यह extern inline फ़ंक्शन घोषित करना व्यर्थ है। यदि, उदाहरण के लिए आपने वैश्विक क्षेत्र में inline फ़ंक्शन घोषित किया है, तो इस अनुभाग के नियम लागू होंगे। इसी तरह अगर आप वैश्विक क्षेत्र में एक वर्ग की घोषणा की और वर्ग परिभाषा के दायरे में एक सदस्य समारोह में परिभाषित किया गया, के रूप में इस तरह के एक समारोह परोक्षinline होगा।

जब आप एक समारोह inline घोषित करना चाहिए का सवाल कीड़े मैं यहाँ खोलने के लिए इच्छुक नहीं हूँ की एक कर सकते हैं है। देखें: When should I write the keyword 'inline' for a function/method?

+0

'स्थिर 'उल्लेख करने लायक हो सकता है। – Yakk

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