我正在用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;