मुझे पता है कि कंपाइलर प्रोग्रामर द्वारा अनुरोध किए गए फ़ंक्शन के इनलाइन विस्तार को निष्पादित या नहीं कर सकता है या नहीं।
मैं जानना उत्सुक था, क्या कोई तरीका है जिसके द्वारा प्रोग्रामर यह सुनिश्चित कर सकता है कि कंपाइलर ने एक विशेष कार्य को रेखांकित किया है?इनलाइन फ़ंक्शंस
उत्तर
जेनरेट कोड को देखकर, नहीं। कुछ कार्यान्वयन उस जानकारी को प्रदान कर सकते हैं लेकिन मानक द्वारा इसकी आवश्यकता नहीं है।
हालात inline
या register
(कंपकंपी) की तरह संकलक करने के लिए सुझाव रहे हैं और यह उन्हें स्वीकार उन्हें अनदेखा या जब चुपके से अपनी पीठ के पीछे जा रहा भी आप से झूठ है कि यह यह किया है और यह नहीं कर रही करने के लिए स्वतंत्र है :-)
मुझे इस तरह की विशेषताओं का उपयोग नहीं करना पड़ता है क्योंकि मुझे संदेह है कि संकलक अक्सर मेरे कोड से अधिकतर प्रदर्शन को छूने के तरीके से बेहतर जानता है।
ऑब्जेक्ट फ़ाइल के डिस्सेप्लर पढ़ें।
असेंबलर कोड उत्पन्न करने और वहां जांचने के लिए अपने कंपाइलर को सेट करें।
और यदि आपके पास डीबग वी रिलीज बिल्ड के लिए अलग-अलग झंडे हैं, तो बाद वाले का उपयोग करना सुनिश्चित करें। मैंने कुछ कंपाइलर्स को देखा है जो कम से कम कुछ ऑप्टिमाइज़ेशन सक्षम होने तक इनलाइन नहीं करते हैं। –
आप अपने कोड को प्रोफाइल कर सकते हैं और देख सकते हैं कि कॉल स्टैक में ब्याज का कार्य दिखाया गया है या नहीं। हालांकि, मुझे लगता है कि यदि आपकी स्टैक नमूना दर पर्याप्त नहीं है तो कोई गारंटी नहीं है।
लेकिन यह साबित हो सकता है कि यह inlined है: अगर आप A
कॉल B
, जो C
कॉल जानते हैं, और A
कभी नहीं C
सीधे कहता है, यदि आप A
कॉल स्टैक पर C
बुला देखते हैं, क्या आप जानते हैं B
कि कॉल के लिए inlined था ।
आउटपुट असेंबलर को देखने के अलावा जानने का कोई तरीका नहीं है।
इन दिनों कंपाइलर्स 'स्मार्ट' हैं और वे तय करते हैं कि कौन से फ़ंक्शन इनलाइन और किस मामले में हैं।
रजिस्टर कीवर्ड की तरह ही, कंपाइलर इन दिनों उठाते हैं और वास्तव में आपके अनुरोधों को अनदेखा करते हैं।
मुझे नहीं लगता कि पता लगाने के लिए आप क्या चाहते हैं के लिए एक रास्ता है,
लेकिन आप से एक इनलाइन समारोह किया जा रहा है समारोह की possibilites बढ़ा सकते हैं,
समारोह की परिभाषा दिखाई बनाना अनुवाद इकाई में जिसे इसे कहा जाता है। यानी आपको हमेशा हेडर फ़ाइल में इनलाइन फ़ंक्शन की परिभाषा डालना पड़ता है।
- 1. इनलाइन फ़ंक्शंस बनाम प्रीप्रोसेसर मैक्रोज़
- 2. इनलाइन फ़ंक्शंस के लिए त्रुटि लिंकिंग
- 3. इनलाइन फ़ंक्शंस अभी भी .prof फ़ाइल
- 4. सी इनलाइन फ़ंक्शंस और "अपरिभाषित बाहरी" त्रुटि
- 5. डीबग बिल्ड (विज़ुअल सी ++ 2008) में इनलाइन फ़ंक्शंस
- 6. सी ++: इनलाइन फ़ंक्शंस और लिंक टाइम कोड जनरेशन
- 7. ओपनसीएल उपयोगकर्ता ने इनलाइन फ़ंक्शंस को परिभाषित किया
- 8. बिंदु मुक्त फ़ंक्शंस इनलाइन करने में सक्षम था?
- 9. std :: फ़ंक्शंस
- 10. इनलाइन परिभाषाएँ
- 11. इनलाइन फ़ंक्शन और दृश्य
- 12. इनलाइन फ़ंक्शन लिंकेज
- 13. केवल वर्चुअल/इनलाइन फ़ंक्शंस के साथ कक्षा निर्यात करने के लिए आवश्यक नहीं है?
- 14. एक सी ++ इनलाइन फ़ंक्शंस की परिभाषा एक ही फाइल में होनी चाहिए?
- 15. क्या Google क्लोजर कंपाइलर * नहीं * इनलाइन कुछ फ़ंक्शंस बनाना संभव है?
- 16. आप अपने PHP फ़ंक्शंस और कक्षाओं को इनलाइन कैसे दस्तावेज करते हैं?
- 17. सी/सी ++ में इनलाइन फ़ंक्शंस को थ्रेड-सुरक्षित बनाने के लिए एक तरीका है?
- 18. एसटीएल फ़ंक्शंस
- 19. $ .extend() फ़ंक्शंस
- 20. आंतरिक संबंध के साथ इनलाइन फ़ंक्शन?
- 21. जब मैं उन्हें इनलाइन असेंबली
- 22. एच 2 इनलाइन इनलाइन-ब्लॉक अजीब ऑफ़सेट
- 23. सी इनलाइन फ़ंक्शन और मेमोरी उपयोग
- 24. क्लोजर में फ़ंक्शंस को कैसे बेंचमार्क करें?
- 25. क्या जीसीसी इनलाइन सी ++ 'इनलाइन' कीवर्ड के बिना काम करता है?
- 26. इनलाइन ऑफ़सेटपेरेंट
- 27. इनलाइन जावास्क्रिप्ट
- 28. इनलाइन फंक्शन
- 29. इनलाइन reStructuredText
- 30. इनलाइन-ब्लॉक
अधिक उपयुक्त सवाल, क्या कोई तरीका है जिसके द्वारा प्रोग्रामर यह सुनिश्चित कर सकता है कि कंपाइलर ने एक विशेष फ़ंक्शन * कॉल * को रेखांकित किया है? – Potatoswatter