我正在用C语言开发简单的虚拟机,它将使用线程代码,请考虑以下结构:

struct opcode
{
  int somefields; //etc
  union z
  {
    char opcode;
    void *opaddress;
  }
}

我的问题是,用char数据(操作码)编写这样的结构并将该文件加载到另一台计算机(可能是不同的体系结构)上并动态填充指针(opaddress)是不是安全且可移植?

最佳答案

不同体系结构的数据类型会有所不同,因此不能保证相同的大小。

typedef struct
{
  int somefields; //etc
  union
  {
    char opcode;
    void *opaddress;
  }z;
}opc;

你可以进入这样的地方
opc.somefields = 10;
opc.z.opcode = 1;

10-08 04:11