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

发布于 2025-01-02 08:54:54 字数 449 浏览 1 评论 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 使指针来自不带 a 的整数 演员表

注意,如果我使用 strncpy 代替,也会发生同样的情况。所以我很困惑。我以为我明白 memcpy 使用 void* 。我做错了什么?

Well, I have to revive a question that was answered here before. I've made some changes for other reasons and now I have a problem again. Here is the relevant details:

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);

With the cast I get the error shown in the subject line. Without the cast I get:

passing argument 2 of 'memcpy' makes pointer from integer without a
cast

Note the same thing happens if I use strncpy instead. So I'm stumped. I thought I understood that memcpy uses void*. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

澜川若宁 2025-01-09 08:54:54

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

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

You need to pass addresses to memcpy. I would assume you want:

memcpy(NEMA_Type,(const char*) &RxBuffer1[NEMA_TypeStart], len);
一梦浮鱼 2025-01-09 08:54:54

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

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

你也可以说......

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len);

Its been awhile, but I think you need to say this instead...

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

You could also say...

memcpy(NEMA_Type, RxBuffer1 + NEMA_TypeStart, len);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文