首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当__builtin_memcpy被libc的memcpy取代时

当__builtin_memcpy被libc的memcpy取代时
EN

Stack Overflow用户
提问于 2012-07-31 19:50:38
回答 1查看 20.5K关注 0票数 22

GCC:memcpy函数中有一个C99/posix函数的版本:__builtin_memcpy

有时它可以被GCC替换成内联版本的memcpy,而在其他情况下,它可以被调用libc的memcpy所取代。人们注意到了这里

最后,在编译器方面,__builtin_memcpy可以返回到发出memcpy函数调用。

这个选择的逻辑是什么?在其他兼容gcc的编译器中,比如clang/llvm,intel c++编译器,PCC,suncc (oracle ),这是一样的逻辑吗?

什么时候我更喜欢使用__builtin_memcpy而不是普通的memcpy?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 23:05:28

一段时间前,我一直在试验内置的替换,我发现只有在编译时可以知道源参数的大小时,<string.h>函数才会被替换。在这种情况下,对libc的调用直接被展开代码替换。

除非您使用-fno-builtin-ansi-std=c89或其他类似的语言进行编译,否则使用__builtin_前缀实际上并不重要。

虽然很难理解,但决定是否发出库调用或代码块的代码似乎是这里

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11747891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档