2012-02-11 37 views
13

मेरे पास एक स्थिर सदस्य कार्य है जो मेरे लिए केवल सिंटैक्टिक चीनी है और मैं चाहता हूं कि इसके शरीर को पैरामीटर पास करने के प्रस्तावों के माध्यम से दिखाई दे।क्या आप स्थिर सदस्य फ़ंक्शन इनलाइन कर सकते हैं?

inline static foo(int a) {return a & 0x00000040;} 

बस के रूप में यह अगर यह static किया जा रहा बिना inline था होगा inlined किया जाएगा?

+1

किसी भी इनलाइनिंग के साथ, जवाब "यह निर्भर करता है"। क्या होगा यदि आप किसी फ़ंक्शन पॉइंटर को कहीं भी 'foo' पास करना चाहते हैं? –

उत्तर

13

संकलक चुनता है कि वह क्या करना चाहता है ताकि हम यह नहीं कह सकें कि यह क्या करना चुन सकता है। उस ने कहा, static का कार्य इसे रेखांकित होने से नहीं रोकेगा; static फ़ंक्शंस मूल रूप से एक अलग नामकरण शैली और कक्षा के निजी सदस्यों तक पहुंच के साथ नि: शुल्क कार्य होते हैं।

+0

वे एक महत्वपूर्ण सम्मान में नि: शुल्क कार्यों से अलग हैं: निजी सदस्यों तक पहुंच – John

+0

@ जॉन आह हाँ, यह एक महत्वपूर्ण अंतर है। –

+0

कक्षा के अंदर कोई परिभाषा किसी भी तरह से इनलाइन करने का अनुरोध नहीं करती है? –

0

एक स्थिर सदस्य विधि में this पैरामीटर नहीं है, और इसलिए केवल स्थिर सदस्य चर का उपयोग कर सकते हैं।

यह इस बात से अलग है कि विधि को रेखांकित किया गया है या नहीं। तो दोनों एक दूसरे से स्वतंत्र हैं।

संकलक यह तय करता है कि कोई विधि रेखांकित की जा रही है या नहीं। कीवर्ड का आपका उपयोग केवल कंपाइलर के लिए एक संकेत है।

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

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