2012-02-05 540 views
0

嗯,我必须恢复一个在此之前回答过的问题。由于其他原因我做了一些更改,现在我又遇到了问题。下面是相关的细节:从不同大小的整数转换为指针[-Wint-to-pointer-cast]

volatile char RxBuffer1[NEMA_BUFFER_LENGTH]; 
uint32_t NEMA_TypeStart; 
char NEMA_Type[10]; 
uint32_t len; 
... 

memcpy(NEMA_Type,(const char*)RxBuffer1[NEMA_TypeStart], len); 

跟投,我得到在主题行中显示的错误。如果没有投我得到:

合格“的memcpy”参数2,使指针从整数没有 投

注意,如果我使用strncpy()函数,而不是同样的事情发生。所以我很难过。我以为我明白,memcpy使用void *。我究竟做错了什么?

回答

1

您需要将地址传递给memcpy。我会假设你想:

memcpy(NEMA_Type,(const char*) &RxBuffer1[NEMA_TypeStart], len); 
+0

你答案是正确的。谢谢。我想我是试图学习速度的受害者。我认为字符串变量真的是C中的一个指针,换句话说,我认为RxBuffer1 [n] ==&RxBuffer1 + n – user1160866 2012-02-05 06:00:12

+0

'RxBuffer'不是一个字符串,它是一个数组。例如,你可以做'Rxbuffer [2] = RxBuffer [0]',所以它们必须是数组元素的值。 – 2012-02-05 06:01:22

+0

并且不要将演员放在那里,它只是分散问题 – 2012-02-05 09:58:18

1

它已经一段时间,但我认为你需要,而不是说这个......

memcpy(NEMA_Type, &RxBuffer1[NEMA_TypeStart], len); 

你也可以说...

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len); 
相关问题