【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};