警告:正在传递‘的参数1;memcpy’;从不带强制转换的整数生成指针

警告:正在传递‘的参数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

我正在编写一个在嵌入式linux上运行的c代码。我必须将数组的内容复制到内存块中。我已将内存的基址定义为:

#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_-arr

BASE_-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函数是一项更简单的任务。