我正在用C开发简单的虚拟机,它将使用Threaded代码,考虑这个结构:
struct opcode
{
int somefields; //etc
union z
{
char opcode;
void *opaddress;
}
}
我的问题是,使用char数据(操作码)编写这样的结构并将该文件加载到另一台机器(可能是不同的架构)并在运行中填充指针(opaddress)是不安全和可移植的?
答案 0 :(得分:-1)
数据类型因架构而异,因此您无法保证相同的尺寸。
typedef struct
{
int somefields; //etc
union
{
char opcode;
void *opaddress;
}z;
}opc;
你可以访问类似的东西
opc.somefields = 10;
opc.z.opcode = 1;