我目前正在使用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)。但是,这是编译(甚至没有警告),并且在没有优化的情况下编译时工作正常。
答案 0 :(得分:1)
您的代码片段确实存在太多参数。将其改写为:
memcpy(real, real_, n * sizeof(float));
并确保包含<string.h>
真正的问题是:
/O2
的情况下编译?您是否启用了警告?你有没有?