2010-05-04 27 views
53

इन चार इनलाइन (कुंजी) शब्दों के बीच अंतर क्या हैं?इनलाइन बनाम __inline बनाम __inline__ बनाम __forceinline बनाम?

inline, __inline, , __forceinline

+0

आपको समुदाय से यह भी पूछना चाहिए कि इनलाइन के उपयोग की सिफारिश क्या है। –

उत्तर

71

inline कीवर्ड, सी ++ और सी 99 में है।

__inline सी में इनलाइन फ़ंक्शन के लिए एक विक्रेता-विशिष्ट कीवर्ड (उदा। MSVC) है, क्योंकि C89 में यह नहीं है।

__inline के समान है लेकिन संकलक के दूसरे सेट से है।

__forceinline एक और विक्रेता-विशिष्ट (मुख्य रूप से एमएसवीसी) कीवर्ड है, जो __inline संकेत (उदाहरण के लिए इनलाइन भी होता है, भले ही यह खराब कोड हो) की तुलना में फ़ंक्शन को इनलाइन करने के लिए अधिक बल लागू करेगा।

जीसीसी और क्लैंग में __attribute__((always_inline)) भी है।

+10

__forceinline इनलाइन की तुलना में एक अधिक बलशाली संकेत है, लेकिन अभी भी एक संकेत (http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.80%29.aspx) है। –

+0

शायद "माइक्रोसॉफ्ट-विशिष्ट" भाषा को "विक्रेता-विशिष्ट" या उस तरह कुछ करने के लिए बदलने पर विचार करें। मैं उपयोग किए गए कई एम्बेडेड क्रॉस-डेवलपमेंट टूलसेट का उपयोग भी __inline और __forceinline का समर्थन करता हूं। दुनिया एमएसओएफटी से बड़ी है ;-) – Dan

+1

ओओएस गलती से सीडब्ल्यू-एड पोस्ट। जो कुछ। – kennytm

18

__inline, और __forceinline सभी कार्यान्वयन विशिष्ट हैं। डबल अंडरस्कोर की वजह से वे सभी पहचानकर्ता कार्यान्वयन के लिए आरक्षित हैं, इसलिए अनुप्रयोगों में उपयोग किए गए पहचानकर्ताओं के साथ संघर्ष नहीं करना चाहिए।

inline एकमात्र सी ++ कीवर्ड है।

8

दृश्य स्टूडियो संकलक के लिए इसका मतलब है:

  • इनलाइन - संकलक करने के लिए सुझाव अपने कोड

  • __forceinline इनलाइन करने के लिए - निर्मित संकलक अनुकूलन ओवरराइड करता है और इनलाइन कोड उत्पन्न

अधिक det के लिए ऐल्स देखें: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx

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