从不同大小的整数转换为指针[-Wint-to-pointer-cast]

时间:2012-02-05 05:36:56

标签: c casting memcpy strncpy

好吧,我必须重新回答之前回答过的问题。我因其他原因做了一些改动,现在我又遇到了一个问题。以下是相关细节:

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 *。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要将地址传递给memcpy。我认为你想要:

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

答案 1 :(得分:1)

已经有一段时间了,但我认为你需要这样说......

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

你也可以说......

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len);