由于memcpy问题,无法使用VS进行优化编译;被视为内在功能

时间:2017-02-20 00:33:30

标签: c++ c optimization visual-studio-2013

我目前正在使用visual studio来做一些非常简单的事情:

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

其中read和real_是float *类型的指针;指向size = n * sizeof(float)的两个已分配内存块的开头。没有优化我编译这个没有问题,但是一旦我在/ O2下编译。编译器抛出以下错误:

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

我无法理解这一点,因为我禁用了内在功能和" CFLAGs"在构建命令行中不包含/ Oi

因此我假设O2默认这样做。因此,我使用pragama编译器指令来本地切换优化和/或内在函数,但没有效果。

此时我完全感到困惑。还有什么我从来没有遇到任何问题。我目前正在使用VS 2013.在这个问题上,MSDN很少或没有用。

编辑:

做什么 - 谢谢黑暗。我发送了四个而不是三个参数 - 请参阅memcpy(3)。但是,这是编译(甚至没有警告),并且在没有优化的情况下编译时工作正常。

1 个答案:

答案 0 :(得分:1)

您的代码片段确实存在太多参数。将其改写为:

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

并确保包含<string.h>

真正的问题是:

  • 为什么有问题的代码在没有/O2的情况下编译?

您是否启用了警告?你有没有?