SystemVerilog union允许单个存储空间以不同的数据类型存在,所以union虽然看起来和struct一样包含了很多个成员,实际上物理上共享相同的存储区域。
结构体占用的内存空间是其中所有成员的存储空间之和,而联合体所占用的存储空间是等于其中所有成员中最大的存储空间。
union { int a; byte b; bit [15:0] c; } data;
在上面的例子中,由于占用最大存储空间的成员是int a,所以这个联合体的存储空间是32bit,示意图如下
而对于结构体
struct { int a; byte b; bit [15:0] c; } data;
所占用的存储空间是所有成员之和。示意图如下
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !