" 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文章
4967瀏覽量
73960 -
typedef
+關注
關注
0文章
26瀏覽量
9878
原文標題:SystemVerilog 中的typedef
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
Typedef的用途和原聲明舉例及陷阱分析
typedef是一種在計算機編程語言中用來聲明自定義數據類型,配合各種原有數據類型來達到簡化編程的目的的類型定義關鍵字。本文主要介紹的是Typedef的用途和陷阱,供參考。 在編程中使
發表于 04-14 07:34
?1510次閱讀
C語言#define和typedef的區別
在C語言編程中,typedef 和 #define是最常用語句,可能很多工作過幾年的工程師都沒有去深究過它們的一些用法和區別。
發表于 11-03 10:29
?1100次閱讀
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.7w次閱讀
typedef的用法
typedef 有一個重要的用途,那就是定義機器無關的類型,例如,你可以定義一個叫 REAL 的浮點類型,在目標機器上它可以獲得最高的精度:typedef long double REAL;
發表于 11-09 16:32
?2396次閱讀
typedef結構體定義
typedef為這個新的結構起了一個名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,MyStruct實際上相當于struct
發表于 11-09 16:55
?9177次閱讀
typedef struct的用法
typedef是類型定義的意思。typedef struct 是為了使用這個結構體方便。具體區別在于:若struct node{ }這樣來定義結構體的話。在定義 node 的結構體變量時,需要這樣寫:struct node n;
發表于 11-09 17:20
?4794次閱讀
typedef和define的介紹及本質區別
對于都可以用來給對象取一個別名的Typedef和define來說,是有區別的。本文通過對typedef和define的介紹,來給讀者詳細的講解它們存在的本質區別,供參考。 typedef 是一種在
發表于 04-14 07:31
?5493次閱讀
typedef的用法以及復雜聲明
c語言中typedef的用法是為了為已知類型提供新類型,在ansi c標準中typedef被歸為存儲類關鍵字,也即是說在進行typedef 聲明的時候,在本來出現在存儲類的位置的標識符不能再出現其他
發表于 03-10 16:58
?1532次閱讀
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
?859次閱讀
typedef的應用實例
評論