c++ - memccpy - ''memcpy'' no fue declarado en este alcance
strcpy (1)
Estoy tratando de construir una biblioteca de código abierto de c ++ con gcc y eclipse. Pero me sale este error ''memcpy'' no fue declarado en este ámbito
Intenté incluir memory.h (y string.h) y eclipse encontrar la función si hago clic en "abrir declaración" pero gcc me da el error.
¿Como lo puedo hacer?
#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
}
Me sale un error en cada memcpy y memmove funciones.
Tienes que poner cualquiera
using namespace std;
al otro espacio de nombres o lo haces en cada memcpy o memmove:
[...]
std::memcpy( tmp, buffer, na*sizeof(T));
[...]
en su código el compilador no sabe dónde buscar la definición de esa función. Si utiliza el espacio de nombres, sabe dónde encontrar la función.
Además, no olvides incluir el encabezado de la función memcpy:
#include <cstring>