将工会内容写入文件安全

时间:2017-11-15 03:52:01

标签: c struct portability unions vm-implementation

我正在用C开发简单的虚拟机,它将使用Threaded代码,考虑这个结构:

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

我的问题是,使用char数据(操作码)编写这样的结构并将该文件加载到另一台机器(可能是不同的架构)并在运行中填充指针(opaddress)是不安全和可移植的?

1 个答案:

答案 0 :(得分:-1)

数据类型因架构而异,因此您无法保证相同的尺寸。

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

你可以访问类似的东西

opc.somefields = 10;
opc.z.opcode = 1;