我正在尝试使用gcc和eclipse构建一个开源的c++库。
但是我遇到了这个错误:“memcpy在此范围内未声明”
我已经尝试包含memory.h(和string.h),如果我点击“打开声明”,eclipse可以找到该函数,但是gcc会报错。
我该怎么办?
#include <algorithm>
#include <memory.h>
namespace rosic
{
//etc etc
template <class T>
void circularShift(T *buffer, int length, int numPositions)
{
int na = abs(numPositions);
while( na > length )
na -=length;
T *tmp = new T[na];
if( numPositions < 0 )
{
memcpy( tmp, buffer, na*sizeof(T));
memmove( buffer, &buffer[na], (length-na)*sizeof(T));
memcpy( &buffer[length-na], tmp, na*sizeof(T));
}
else if( numPositions > 0 )
{
memcpy( tmp, &buffer[length-na], na*sizeof(T));
memmove(&buffer[na], buffer, (length-na)*sizeof(T));
memcpy( buffer, tmp, na*sizeof(T));
}
delete[] tmp;
}
//etc etc
}
每次使用memcpy和memmove函数时我都会遇到错误。
string.h
已经与gcc捆绑在一起,不需要任何额外的选项,因此这里可能有些问题。 - Matthieu M.#include <string.h>
或者将其放在文件中太低的位置。请展示一些最小化可复现代码来说明问题。 - user2357112cstring
并添加using namespace std;
(如果这是一个 cpp 文件)吗?(http://en.cppreference.com/w/cpp/string/byte/memcpy) - BartoszKP