CG_INLINE
एक मैक्रो है जिसका उपयोग इनलाइन फ़ंक्शन के रूप में किसी विधि को चिह्नित करने के लिए किया जाता है। सटीक वाक्यविन्यास (था?) कंपाइलर निर्भर है, और प्रीप्रोसेसर के माध्यम से आपके कंपाइलर के लिए सही एक चुना जाता है।
वर्तमान जीसीसी के लिए, इसे static inline
को हल करना चाहिए।
inline
के साथ चिह्नित फ़ंक्शन का बिंदु यह है कि संकलक उस फ़ंक्शन के शरीर के समतुल्य सम्मिलित कर सकता है जहां फ़ंक्शन को कॉल किया गया था (थोड़ा अधिक महंगा) फ़ंक्शन कॉल करने के बजाय। तो अगर आप हैं:
void bar(int a, int b)
{
NSLog(@"%d", a + b);
}
यह एक समारोह कॉल जो कुछ आर्किटेक्चर पर महंगा हो सकता है और उदाहरण है जब के लिए बहुत ध्यान देने योग्य हो सकता है की बचत होती है:
inline int foo(int a, int b)
{
return a + b;
}
void bar(int a, int b)
{
NSLog(@"%d", foo(a, b));
}
संकलन तो आंतरिक रूप से करने के लिए अनुमति दी है इसे करने के लिए बदलना आप फंक्शन को कुछ हज़ार बार लूप में बुला रहे हैं।
ध्यान दें कि यह केवल संकलक मतलब है इस बदलाव कर सकता है, यह जरूरी नहीं है कि यह करता करते हैं। कंपाइलर सेटिंग्स पर निर्भर करता है।
+1 * * अपने कोड में, इसके साथ परेशान न करें (मूल रूप में, या इस मैक्रो के माध्यम से) जब तक कि आप वास्तव में सुनिश्चित न हों कि आपको इसकी आवश्यकता है ** (और इसे प्रोफाइलिंग के माध्यम से उपयोगी साबित कर दिया है) **। "* – DarkDust
धन्यवाद। मुझे लगता है कि यह अभी भी कार्यों को परिभाषित करने के लिए उपयोगी है (विधियों के विपरीत); क्या ये सच है? – MrHen
हां, फ़ंक्शन (यानी शुद्ध सी) विधियों (उद्देश्य सी विधियों) से बेहतर हो सकते हैं, जिसमें वे ओवरहेड कॉलिंग नहीं करते हैं जो कभी-कभी उद्देश्य सी संदेश के साथ अर्जित होता है। वे अन्य भाषाओं के लिए भी अधिक आसानी से बंधे होते हैं (और अन्य, शुद्ध सी/++, पुस्तकालयों में पुन: उपयोग किए जाते हैं)। –