加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ‘memcpy’未在此范围内声明

发布时间:2020-12-16 05:28:28 所属栏目:百科 来源:网络整理
导读:我试图用 gcc和 eclipse来构建一个开源的c库. 但是我收到这个错误 ‘memcpy’没有在此范围内声明 我尝试包括memory.h(和string.h)和eclipse找到该功能,如果我点击“开放声明”,但gcc给我的错误. 我能怎么做? #include algorithm#include memory.hnamespace
我试图用 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],(length-na)*sizeof(T));
      memcpy(  buffer,na*sizeof(T));
    }
    delete[] tmp;
  }

//etc etc
}

我收到每个memcpy和memmove功能的错误.

解决方法

你要么放了
using namespace std;

到另一个命名空间,或者你在每个memcpy或memmove这样做:

[…]

std::memcpy(  tmp,na*sizeof(T));

[…]

在你的代码中,编译器不知道在哪里查找该函数的定义.如果使用命名空间,它会知道在哪里找到该函数.

此外,不要忘记包含memcpy函数的头文件:

#include <cstring>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读