由于Memcpy的问题,无法使用VS进行优化;被视为固有功能

Cannot compile under optimisation using VS due to an issue with memcpy; treated as an intrinsic function

本文关键字:优化 功能 VS 问题 Memcpy 由于      更新时间:2023-10-16

我目前正在使用Visual Studio来做非常简单的事情:

memcpy(real, real_, n, sizeof(float));

读取和real_是float类型*的指针*;指向两个分配的大小的内存= n*sizeof(float)的开始。如果没有优化,我就没有问题来编译这一点,但是一旦我汇编了/o2。编译器会引发以下错误:

Error   32  error C2167: 'memcpy' : too many actual parameters for intrinsic function

我无法理解这一点,因为我已经禁用了内在函数,并且构建命令行中的" cflags"不包括/oi

我假设O2默认情况下这样做。因此,我使用Pragama编译器指令在局部进行优化和/或内在切换而无效。

此时我完全困惑。而且,我从来没有任何问题。我目前正在与VS 2013一起工作。

编辑:

do'h-感谢黑暗。我要发送四个论点而不是三个论点 - 见memcpy(3)。但是,这是在编译(甚至没有警告),并且在没有优化的情况下编译时工作正常。

您的代码片段中确实有太多参数。将其重写为:

memcpy(real, real_, n * sizeof(float));

并确保您包括<string.h>

真正的问题是:

  • 为什么根本没有/O2编译有问题的代码?

您是否启用了警告?你得到吗?