警告:正在传递‘的参数1;memcpy’;从不带强制转换的整数生成指针
我正在编写一个在嵌入式linux上运行的c代码。我必须将数组的内容复制到内存块中。我已将内存的基址定义为:警告:正在传递‘的参数1;memcpy’;从不带强制转换的整数生成指针,c,embedded-linux,memcpy,C,Embedded Linux,Memcpy,我正在编写一个在嵌入式linux上运行的c代码。我必须将数组的内容复制到内存块中。我已将内存的基址定义为: #define BASE_ADDRESS 0x40000000 现在,当我将数组的内容memcpy到基址上时,我得到了一个警告:从整数生成一个指针而不进行强制转换。如何删除此警告?这是我的代码: unsigned int rx1_arr[64] = {0}; //some data is added to this array before memcpy memcpy(BASE_ADDR
#define BASE_ADDRESS 0x40000000
现在,当我将数组的内容memcpy到基址上时,我得到了一个警告:从整数生成一个指针而不进行强制转换。如何删除此警告?这是我的代码:
unsigned int rx1_arr[64] = {0}; //some data is added to this array before memcpy
memcpy(BASE_ADDRESS, &rx1_arr, 64*sizeof(int));
你需要向虚空掷骰子
memcpy((void *)BASE_ADDRESS, rx1_arr, 64*sizeof(int));
rx1_arr前面不需要地址运算符&
rx1_-arr
,和rx1_-arr
,和rx1_-arr[0]
指向同一地址,但有不同的类型。您需要将其强制转换为无效poiner
memcpy((void *)BASE_ADDRESS, rx1_arr, 64*sizeof(int));
rx1_arr前面不需要地址运算符&
rx1_arr
,rx1_arr
,rx1_arr[0]
指向相同的地址,但有不同的类型。正如您在中看到的,memcpy
期望第一个参数是void*
,但您给出的基地址是int
。给出的错误是:
注意:应为“void*restrict”,但参数的类型为“int”
只需将其转换为一个void*
memcpy((void *)BASE_ADDRESS, &rx1_arr, 64*sizeof(int));
注:不要在memcpy
中使用&rx1\u-arr
,而是使用rx1\u-arr,正如您在中所看到的,memcpy
期望第一个参数是void*
,但您给出的基地址是int
。给出的错误是:
注意:应为“void*restrict”,但参数的类型为“int”
只需将其转换为一个void*
memcpy((void *)BASE_ADDRESS, &rx1_arr, 64*sizeof(int));
注:不要在你的memcpy
中使用&rx1_-arr
,而是使用rx1_-arrBASE_-ADDRESS
是整数类型,memcpy
希望它的第一个参数是void*
类型。是的,我已经解决了。memcpy((void*)BASE_-ADDRESS,&rx1_-arr,64*sizeof(int));还工作了memcpy((void*)基地址和rx1_arr,64*sizeof(unsigned int))代码>我有一个基址和将近200个偏移地址。将(void*)直接添加到memcpy函数是一项更简单的任务。BASE_ADDRESS
是整数类型,memcpy
希望它的第一个参数是void*
类型。是的,我已经解决了。memcpy((void*)BASE_ADDRESS,&rx1_arr,64*sizeof(int));还工作了memcpy((void*)基地址和rx1_arr,64*sizeof(unsigned int))代码>我有一个基址和将近200个偏移地址。将(void*)直接添加到memcpy函数是一项更简单的任务。