के साथ प्रतिस्थापित किया गया है तो GCC: __builtin_memcpy
में C99/posix memcpy
फ़ंक्शन का एक संस्करण है।जब __builtin_memcpy को libc के memcpy
कभी-कभी इसे जीसीसी द्वारा memcpy के इनलाइन संस्करण में प्रतिस्थापित किया जा सकता है और अन्य मामलों में इसे libc की memcpy पर कॉल करके प्रतिस्थापित किया जाता है। जैसे यह here नोट किया गया था:
अंत में, एक संकलक नोट पर, __builtin_memcpy वापस एक memcpy फ़ंक्शन कॉल उत्सर्जन करने के लिए गिर सकता है।
इस चयन में तर्क क्या है? क्या यह अन्य जीसीसी-संगत कंपाइलर्स, जैसे क्लैंग/एलएलवीएम, इंटेल सी ++ कंपाइलर, पीसीसी, सनक (ऑरैकल स्टूडियो) में तर्क है?
जब मुझे सादे memcpy पर __builtin_memcpy का उपयोग करना पसंद करना चाहिए?
ऐसा प्रतीत होता है कि यह एक इनलाइन संस्करण का उपयोग करता है जब आकार संकलित समय स्थिर होता है और यह 8192 से कम या उसके बराबर होता है। –