I'm trying to build an open source c++ library with gcc and eclipse. But I get this error ‘memcpy’ was not declared in this scope
I've try to include memory.h (and string.h) and eclipse find the function if I click "open declaration" but gcc give me the error.
How can I do?
#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
}
I get error on each memcpy and memmove function.
string.h
is bundled with gcc and does not require any additional option, so there is something fishy here. – Matthieu M.#include <string.h>
or put it too low in your file. Show us some minimal example code that demonstrates the problem. – user2357112 supports Monicacstring
and addingusing namespace std;
(if this is a cpp file) (en.cppreference.com/w/cpp/string/byte/memcpy)? – BartoszKP