मेरे पास एक ऐसा फ़ंक्शन है जो डेटा के टुकड़े पर चल रहा है (मान लें, int
), और मैं इसे वैल्यू के संदर्भ को पास करके इसे बदलना चाहता हूं। इस प्रकार, मेरे पास कार्य है: void myFunction(int *thing) { ... }
। जब मैं इसका उपयोग करता हूं तो मैं इसे इस प्रकार कहता हूं: myFunction(&anInt)
।क्या जीसीसी एक ऐसा फ़ंक्शन इनलाइन करेगा जो सूचक लेता है?
जैसा कि मेरे फ़ंक्शन को अक्सर कहा जाता है (लेकिन कई अलग-अलग स्थानों से) मैं इसके प्रदर्शन के बारे में चिंतित हूं। मैंने इसे फ़ंक्शन में दोबारा सुधारने का कारण टेस्टेबिलिटी और कोड पुन: उपयोग किया है।
क्या संकलक फ़ंक्शन को अनुकूलित करने में सक्षम होगा, इसे सीधे मेरे anInt
चर पर संचालित करने के लिए इनलाइन कर देगा?
मुझे उम्मीद है कि आप इस सवाल को उस भावना में लेंगे जिसमें यह पूछा गया है (यानी मैं अनुकूलन के बारे में समय से पहले चिंता नहीं कर रहा हूं, मैं जवाब के बारे में उत्सुक हूं)। इसी प्रकार, मैं इसे मैक्रो में नहीं बनाना चाहता हूं।
कम से कम जीसीसी 4.4.2 के साथ, इसे 'इनलाइन' चिह्नित करने की भी आवश्यकता नहीं है! (हालांकि 'स्थिर' का उपयोग जेनरेट बाइनरी में फ़ंक्शन की एक अतिरिक्त प्रति से बच जाएगा।) – ephemient