好吧,我必须重新回答之前回答过的问题。我因其他原因做了一些改动,现在我又遇到了一个问题。以下是相关细节:
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 *。我做错了什么?
答案 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);