gpt4 book ai didi

gcc - 当 __builtin_memcpy 替换为 libc 的 memcpy 时

转载 作者:行者123 更新时间:2023-12-02 00:14:33 29 4
gpt4 key购买 nike

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

有时它可以被 GCC 替换为 memcpy 的内联版本,而在其他情况下它可以通过调用 libc 的 memcpy 来替换。例如。有人指出here :

Finally, on a compiler note, __builtin_memcpy can fall back to emitting a memcpy function call.

这个选择的逻辑是什么?其他兼容 gcc 的编译器(如 clang/llvm、intel c++ 编译器、PCC、suncc (oracle studio))中的逻辑是否相同?

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

最佳答案

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

除非你用 -fno-builtin 编译, -ansi , -std=c89或类似的东西,实际上无论您是否使用 __builtin_ 并不重要是否有前缀。

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

关于gcc - 当 __builtin_memcpy 替换为 libc 的 memcpy 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747891/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com