【发布时间】:2012-02-18 17:22:31
【问题描述】:
我有一个关于 glibc 函数调用的问题。是否有一个标志告诉 gcc 不要内联某个 glibc 函数,例如内存?
我已经尝试过 -fno-builtin-memcpy 和其他标志,但它们不起作用。目标是调用实际的 glibc memcpy 函数并且没有内联代码(因为编译时的 glibc 版本与运行时的不同)。它仅用于测试目的。通常我不会那样做。
有什么解决办法吗?
更新:
只是为了更清楚:过去 memcpy 即使在重叠区域也可以工作。这同时发生了变化,我可以在使用不同的 glibc 版本进行编译时看到这种变化。所以现在我想测试我的旧代码(在应该使用 memmove 的地方使用 memcpy)在具有较新 glibc(例如 2.14)的系统上是否正常工作。但要做到这一点,我必须确保调用新的 memcpy 并且没有内联代码。
最好的问候
【问题讨论】:
-
将
memcpy(params..)改写成(memcpy)(params..) -
@osgx:这可以防止任何
memcpy()宏的扩展,但不会影响实际函数的内联。