gpt4 book ai didi

c++ - 如何使用 uin8_t 数组分配结构?

转载 作者:行者123 更新时间:2023-11-30 00:43:59 25 4
gpt4 key购买 nike

当我尝试编译以下简单代码时出现编译错误:

uint8_t latestMessageID[4];

struct Notification {
uint8_t uuid[4];
...
};

Notification notificationList[NOTIFICATION_LIST_SIZE];

void setup()
{
Notification notificationList[NOTIFICATION_LIST_SIZE];
notificationList[0].uuid = latestMessageID; // Compilation error here
...
}

错误:

expression must be a modifiable lvalue

Live example.

此错误的原因是什么,我该如何解决?

最佳答案

你不能像这样分配一个数组。如果您实际上使用的是 c++(和 11),您可以使用类似 std::array 的东西:

using uuid_t = std::array<uint8_t, 16>;

struct Notification {
uuid_t uuid;
...

它的行为完全相同,占用相同的空间,但提供了一个operator=。所以这是可能的:

notificationList[0].uuid = latestMessageID;

假设 latestMessageID 也是一个 std::array

Live example.

pre-c++11 的其他选项包括 boost::array 并且如果您对内存分配没问题(或者即使不同意并且可以提供自定义分配器),您可以使用 std::vector.

作为进一步说明,请注意 notificationList 声明了两次,一次是全局声明,另一次是在函数 setup 中声明。这些不是同一个对象,您在 setup 中分配给的对象将在该函数结束时超出范围,您所做的更改将丢失。

关于c++ - 如何使用 uin8_t 数组分配结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com