使用变量转换 C 结构体

标签 c casting

我正在为一个项目编写一个通信协议(protocol),其中包括两个用于请求和响应的 C 结构。根据设备的设置方式,数据传输可以是请求(主模块)或响应(从模块)。

这些结构彼此非常接近。最大的区别在于请求与响应的结构方式。

我有一个变量,它保存指向定义为的全局变量的指针

unsigned int MBData;

MBData = gCommResponse;

当引用代码时,我要么有

((MBResponse*)MBData)->Address = someData;

((MBResponse*))MBData)->Address = someData;

此代码是成功的,但希望通信功能更加模糊。

我想做的是使用指向 MBRequest 或 MBResponse 的指针来转换 MBData。

unsigned int MBStruct;

MBStruct = &MBResponse;

((MBStruct*)MBData)->Address = someData; // Something like this

这在 C 编程中可能吗?

谢谢。

最佳答案

这是不可能的。当访问结构体成员时,编译器需要在编译时知道该结构体的类型。

尽管这两个结构可能具有具有共同名称的字段,但不能保证它们是相同(或兼容)的类型,或者它们在各自结构中的偏移量相同。

关于使用变量转换 C 结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992887/

相关文章:

c - MPI_CART_CREATE 期间参数

在 c 中将 Const 转换为非 Const

postgresql - Postgres Cast 复合类型

c - C 中嵌套结构类型和复制函数的内存泄漏

c - 如何在 C 中清空标准输入/输出缓冲区

C++ 错误 : cannot convert ‘char (*)[63]’ to ‘char*’ in initialization

c - 顶级声明符后应为 ';'

java - 如何使对象像 boolean 值一样使用 booleanValue() ?

coldfusion - ColdFusion querynew() 中的数据类型支持

c# - 将 C# DynamicObject 转换为任意类型