在C语言中,如果你遇到了`undefined reference to `memcpy`的错误,这通常意味着链接器没有找到`memcpy`函数的定义。`memcpy`是C标准库函数,用于内存拷贝,它通常在`string.h`头文件中声明,并在`stdlib
摘要:【C语言】解决初始化数组时报错“undefined reference to `memcpy'” 零、报错 代码: char start[] = {0xd, 0xa, 0xb3, 0xcc, 0xd0, 0xf2,
【C语言】解决初始化数组时报错“undefined reference to `memcpy'”
零、报错
代码:
char start[] = {0xd, 0xa, 0xb3, 0xcc, 0xd0, 0xf2, 0xd2, 0xd1, 0xc6, 0xf4, 0xb6, 0xaf, 0xa1, 0xad, 0xa1, 0xad, 0xd, 0xa, 0};
报错:
interface.o: In function `main':
/home/yu/fs4412/project/uart/interface.c:45: undefined reference to `memcpy'
/home/yu/fs4412/project/uart/interface.c:85: undefined reference to `memcpy'
/home/yu/fs4412/project/uart/interface.c:90: undefined reference to `memcpy'
make: *** [Makefile:23:all] 错误 1
壹、解决
猜想是C语言经过预处理,会把数组初始化替换成用memcpy函数处理,由于没导入对应头文件,故报错,把初始化方法换一下即可,定义大小,后面单独赋值,修改后代码如下:
// 初始化时只指定数组大小
char start[19];
// 单独对数组元素进行赋值
start[0] = 0xd;
start[1] = 0xa;
start[2] = 0xb3;
start[3] = 0xcc;
start[4] = 0xd0;
start[5] = 0xf2;
start[6] = 0xd2;
start[7] = 0xd1;
start[8] = 0xc6;
start[9] = 0xf4;
start[10] = 0xb6;
start[11] = 0xaf;
start[12] = 0xa1;
start[13] = 0xad;
start[14] = 0xa1;
start[15] = 0xad;
start[16] = 0xd;
start[17] = 0xa;
start[18] = 0;
贰、可以用AI解决
把这行代码转变为单独赋值的,初始化时只指定大小,后面单独赋值
char start[] = {0xd, 0xa, 0xb3, 0xcc, 0xd0, 0xf2, 0xd2, 0xd1, 0xc6, 0xf4, 0xb6, 0xaf, 0xa1, 0xad, 0xa1, 0xad, 0xd, 0xa, 0};
