" typedef "仅仅意味着提供一个类型名,可以简单地理解为文本替换,提高代码的可读性。
typedef existing_type mytype;
例如:
typedef enum {NO, YES} boolean;
boolean myvar1, myvar2; // user-defned type
等价于
enum {NO, YES} myvar1,myvar2;
下面是一个简单的例子:
module tdef; typedef integer unsigned u_integer; typedef enum {RED, GREEN, BLUE} rgb; typedef bit [7:0] ubyte; u_integer uI = 32'h face_cafe; u_integer uI1 = 32'h cafe_face; rgb rgb_i = GREEN; rgb rgb_i1 = BLUE; ubyte cnt = 8'hFF; initial begin $display ("rgb_i=%s rgb_i1=%s uI=0x%0h uI1=0x%0h cnt=%0d", rgb_i.name( ), rgb_i1.name( ), uI, uI1, cnt); end endmodule
Simulation log:
rgb_i=GREEN rgb_i1=BLUE uI=0xfacecafe uI1=0xcafeface cnt=255 V C S S i m u l a t i o n R e p o r t
Example 1:
module中声明了三种不同的“类型定义”。
第一个typedef是
typedef integer unsigned u_integer;
然后声明两个类型为“u_integer”的变量u1和uI1并
初始化:
u_integer uI = 32'h face_cafe; u_integer uI1 = 32'h cafe_face;
第二个typedef是
typedef enum {RED, GREEN, BLUE} rgb;
声明两个变量" rgb_i "和" rgb_i1 "并初始化:
rgb rgb_i = GREEN; rgb rgb_i1 = BLUE;
最后一个typedef
typedef bit [7:0] ubyte;
声明一个变量cnt 并初始化
ubyte cnt = 8'hFF;
上面的几个例子还不是很好地体现typedef的好处,最大的优势体现在更复杂的数据结构上上。
Example 1:
typedef struct {
bit [31:0] opcode;
bit R_W;
logic byteEnb;
integer data;
integer addr;
} read_cycle;
read_cycle rC;
Example 2:
typedef int data_t [3:0][7:0]; data_t a;
Example 3:
typedef int Qint[$]; Qint DynamicQ[ ]; // same as int DynamicQ[ ][$];
Example 4:
typedef struct packed {
bit [3:0] s1;
bit s2;
} myStruct;
typedef union {
logic [7:0] u1;
myStruct b2;
} mUnionT;
mUnionT Union1;
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
代码
+关注
关注
30文章
4976浏览量
74358 -
typedef
+关注
关注
0文章
26浏览量
9903
原文标题:SystemVerilog 中的typedef
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
Typedef的用途和原声明举例及陷阱分析
typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。本文主要介绍的是Typedef的用途和陷阱,供参考。 在编程中使
发表于 04-14 07:34
•1550次阅读
C语言#define和typedef的区别
在C语言编程中,typedef 和 #define是最常用语句,可能很多工作过几年的工程师都没有去深究过它们的一些用法和区别。
发表于 11-03 10:29
•1143次阅读
typedef的使用【转】
:typedef给变量类型定义一个别名.typedef struct{ int a; int b; }MY_TYPE; 这里把一个未命名结构直接取了一个叫MY_TYPE的别名, 这样如果你想定义结构的实例
发表于 07-27 11:06
typedef是什么意思
typedef是在计算机编程语言中用来为复杂的声明定义简单的别名,与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中。
发表于 11-09 14:03
•1.8w次阅读
typedef的用法
typedef 有一个重要的用途,那就是定义机器无关的类型,例如,你可以定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:typedef long double REAL;
发表于 11-09 16:32
•2444次阅读
typedef结构体定义
typedef为这个新的结构起了一个名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,MyStruct实际上相当于struct
发表于 11-09 16:55
•9334次阅读
typedef struct的用法
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;
发表于 11-09 17:20
•4959次阅读
typedef和define的介绍及本质区别
对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的。本文通过对typedef和define的介绍,来给读者详细的讲解它们存在的本质区别,供参考。 typedef 是一种在
发表于 04-14 07:31
•5545次阅读
typedef的用法以及复杂声明
c语言中typedef的用法是为了为已知类型提供新类型,在ansi c标准中typedef被归为存储类关键字,也即是说在进行typedef 声明的时候,在本来出现在存储类的位置的标识符不能再出现其他
发表于 03-10 16:58
•1580次阅读
C typedef 看完这篇就够了
原文链接:为什么很多人编程喜欢用typedef?typedef 的基本使用typedef与结构体的结合使用typedef 是 C 语言的一个关键字,用来给某个类型起个别名,也就是给C语
发表于 11-16 16:06
•14次下载
C语言学习笔记---typedef 简介
在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。typedef 创建的符号只能用于数据类型,不能用于值。而
发表于 01-13 13:26
•1次下载
C语言中的typedef的用法
在以前的学习中对于C语言中typedef和define的认识是,#define是宏,作用是简单的替换,而typedef也是替换,只不过比define高级的是在替换的时候会进行语法检查。但是后来
发表于 01-13 13:36
•0次下载
C语言中的typedef的应用
C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE。
发表于 03-06 11:34
•916次阅读
typedef的应用实例
评论