0

好吧,我必须恢复以前在这里回答过的问题。由于其他原因,我进行了一些更改,现在我又遇到了问题。以下是相关细节:

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

4

2 回答 2

1

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

memcpy(NEMA_Type,(const char*) &RxBuffer1[NEMA_TypeStart], len);
于 2012-02-05T05:42:24.490 回答
1

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

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

你也可以说...

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len);
于 2012-02-05T05:44:18.400 回答