gpt4 book ai didi

c++ - C++中的任意类型转换

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

<分区>

我有一系列字节通过传输介质传入(一次一个字节),我需要将其重组为消息结构。两端共享一个公共(public)头文件,其中消息结构被打包。两端也使用相同的编译器编译,尽管考虑到打包属性应该无关紧要。这在 C 中很简单,但我必须将此代码放入用 C++ 编写的更大的代码库中。我曾尝试使用 C++ 中的各种转换模式,但我似乎无法正确使用它们。

我用 C 编写嵌入式固件已有一段时间,但大部分时间只阅读 C++ 代码。那么,在 C++ 中执行类似操作的“正确”方法是什么?假设 recv_msg 是一个回调函数,当有新字节可供读取时执行:

void recv_msg(uint8_t data)
{
static int bytes_recvd = 0;
static struct msg = {0};

((uint8_t*)&msg)[bytes_recvd] = data;
if(++bytes_recvd == sizeof(struct msg)){
printf("Msg received\n");
bytes_recvd = 0;
g_msg_recvd_flag = 1;
}
}

我遇到的问题是 C++ 的严格类型不允许我将 msg 任意转换为 uint8_t 数组。这样一来,一次一个字节地重建消息结构就非常简单了。

假设我有 bytes_recvdstruct msg 作为相关 C++ 类的成员,如何在 C++ 中完成类似的事情?

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