假设我们有一个实例
struct Message {
char * topic;
int topicLength;
void * data;
int dataLength;
};
我们想将它重新创建为其他类型的对象
struct CoreMessage {
int messaageId;
char * topic;
int topicLength;
void * data;
int dataLength;
char * senderId;
int senderIdLength;
};
我们可以安全地将 Message A
转换为 CoreMessage B
吗? C 中的东西没有复制内容,类型部分重叠,如此处所示?
最佳答案
你可以用匿名结构/union 来伪造它。无可否认,自 C11
以来,匿名结构才被标准化,但许多流行的编译器长期以来一直支持它们作为扩展。
这就是这些,公认的不太漂亮的东西:
struct Message {
char * topic;
int topicLength;
void * data;
int dataLength;
char * senderId;
int senderIdLength;
};
struct CoreMessage {
int messageId;
union {
struct Message;
struct Message message;
};
};
关于c - 具有 N 个字段的类型 A 是否可以将其合并到具有 N+x 个字段的类型 B 的新对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653563/