memcpy
GCC中有一个版本的 C99/posix函数: __builtin_memcpy
.
有时它可以被 GCC 替换为内联版本的 memcpy,而在其他情况下,它被调用 libc 的 memcpy 替换。例如,这里指出:
最后,在编译器注释中, __builtin_memcpy 可以退回到发出 memcpy 函数调用。
这个选择的逻辑是什么?其他 gcc 兼容编译器的逻辑是否相同,例如 clang/llvm、intel c++ 编译器、PCC、suncc (oracle studio)?
什么时候我应该更喜欢使用 __builtin_memcpy 而不是普通的 memcpy?