0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

typedef的應(yīng)用實(shí)例

芯片驗(yàn)證工程師 ? 來(lái)源:芯片驗(yàn)證工程師 ? 作者:芯片驗(yàn)證工程師 ? 2022-10-14 09:33 ? 次閱讀

" typedef "僅僅意味著提供一個(gè)類型名,可以簡(jiǎn)單地理解為文本替換,提高代碼的可讀性。

typedef existing_type mytype;

例如:

typedef enum {NO, YES} boolean;
boolean myvar1, myvar2; // user-defned type

等價(jià)于

enum {NO, YES} myvar1,myvar2;

下面是一個(gè)簡(jiǎn)單的例子:

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中聲明了三種不同的“類型定義”。
第一個(gè)typedef是

typedef integer unsigned u_integer;

然后聲明兩個(gè)類型為“u_integer”的變量u1和uI1并
初始化:

u_integer uI = 32'h face_cafe;
u_integer uI1 = 32'h cafe_face;

第二個(gè)typedef是

typedef enum {RED, GREEN, BLUE} rgb;

聲明兩個(gè)變量" rgb_i "和" rgb_i1 "并初始化:

rgb rgb_i = GREEN;
rgb rgb_i1 = BLUE;

最后一個(gè)typedef

typedef bit [7:0] ubyte;

聲明一個(gè)變量cnt 并初始化

ubyte cnt = 8'hFF;

上面的幾個(gè)例子還不是很好地體現(xiàn)typedef的好處,最大的優(yōu)勢(shì)體現(xiàn)在更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)上上。

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;

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68234
  • typedef
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9527

原文標(biāo)題:SystemVerilog 中的typedef

文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Typedef的用途和原聲明舉例及陷阱分析

    typedef是一種在計(jì)算機(jī)編程語(yǔ)言中用來(lái)聲明自定義數(shù)據(jù)類型,配合各種原有數(shù)據(jù)類型來(lái)達(dá)到簡(jiǎn)化編程的目的的類型定義關(guān)鍵字。本文主要介紹的是Typedef的用途和陷阱,供參考。 在編程中使
    發(fā)表于 04-14 07:34 ?1174次閱讀
    <b class='flag-5'>Typedef</b>的用途和原聲明舉例及陷阱分析

    C語(yǔ)言#define和typedef的區(qū)別

    在C語(yǔ)言編程中,typedef 和 #define是最常用語(yǔ)句,可能很多工作過(guò)幾年的工程師都沒(méi)有去深究過(guò)它們的一些用法和區(qū)別。
    發(fā)表于 11-03 10:29 ?665次閱讀

    typedef的使用【轉(zhuǎn)】

    typedef給變量類型定義一個(gè)別名.typedef struct{ int a; int b; }MY_TYPE; 這里把一個(gè)未命名結(jié)構(gòu)直接取了一個(gè)叫MY_TYPE的別名, 這樣如果你想定義結(jié)構(gòu)的實(shí)例
    發(fā)表于 07-27 11:06

    Typedef用法小結(jié)

    非常不錯(cuò)的文檔有著基本數(shù)據(jù)類型結(jié)構(gòu)體enum與函數(shù)指針等等的Typedef相關(guān)用法.
    發(fā)表于 11-02 11:36 ?19次下載

    typedef是什么意思

    typedef是在計(jì)算機(jī)編程語(yǔ)言中用來(lái)為復(fù)雜的聲明定義簡(jiǎn)單的別名,與宏定義有些差異。它本身是一種存儲(chǔ)類的關(guān)鍵字,與auto、extern、mutable、static、register等關(guān)鍵字不能出現(xiàn)在同一個(gè)表達(dá)式中。
    發(fā)表于 11-09 14:03 ?1.5w次閱讀
    <b class='flag-5'>typedef</b>是什么意思

    typedef的用法

    typedef 有一個(gè)重要的用途,那就是定義機(jī)器無(wú)關(guān)的類型,例如,你可以定義一個(gè)叫 REAL 的浮點(diǎn)類型,在目標(biāo)機(jī)器上它可以獲得最高的精度:typedef long double REAL;
    發(fā)表于 11-09 16:32 ?2132次閱讀

    typedef結(jié)構(gòu)體定義

    typedef為這個(gè)新的結(jié)構(gòu)起了一個(gè)名字,叫MyStruct。typedef struct tagMyStruct MyStruct;因此,MyStruct實(shí)際上相當(dāng)于struct
    發(fā)表于 11-09 16:55 ?7502次閱讀

    typedef struct的用法

    typedef是類型定義的意思。typedef struct 是為了使用這個(gè)結(jié)構(gòu)體方便。具體區(qū)別在于:若struct node{ }這樣來(lái)定義結(jié)構(gòu)體的話。在定義 node 的結(jié)構(gòu)體變量時(shí),需要這樣寫:struct node n;
    發(fā)表于 11-09 17:20 ?3342次閱讀

    typedef和define的介紹及本質(zhì)區(qū)別

    對(duì)于都可以用來(lái)給對(duì)象取一個(gè)別名的Typedef和define來(lái)說(shuō),是有區(qū)別的。本文通過(guò)對(duì)typedef和define的介紹,來(lái)給讀者詳細(xì)的講解它們存在的本質(zhì)區(qū)別,供參考。 typedef 是一種在
    發(fā)表于 04-14 07:31 ?5077次閱讀

    typedef的用法以及復(fù)雜聲明

    c語(yǔ)言中typedef的用法是為了為已知類型提供新類型,在ansi c標(biāo)準(zhǔn)中typedef被歸為存儲(chǔ)類關(guān)鍵字,也即是說(shuō)在進(jìn)行typedef 聲明的時(shí)候,在本來(lái)出現(xiàn)在存儲(chǔ)類的位置的標(biāo)識(shí)符不能再出現(xiàn)其他
    發(fā)表于 03-10 16:58 ?1176次閱讀

    C typedef 看完這篇就夠了

    原文鏈接:為什么很多人編程喜歡用typedeftypedef 的基本使用typedef與結(jié)構(gòu)體的結(jié)合使用typedef 是 C 語(yǔ)言的一個(gè)關(guān)鍵字,用來(lái)給某個(gè)類型起個(gè)別名,也就是給C語(yǔ)
    發(fā)表于 11-16 16:06 ?14次下載
    C  <b class='flag-5'>typedef</b> 看完這篇就夠了

    C語(yǔ)言學(xué)習(xí)筆記---typedef 簡(jiǎn)介

    ?? 在單片機(jī)和操作系統(tǒng)中 typedef 會(huì)經(jīng)常用到,它可以為某一個(gè)類型自定義名稱。和#define比較類似。但是又有不同的地方。typedef 創(chuàng)建的符號(hào)只能用于數(shù)據(jù)類型,不能用于值。而
    發(fā)表于 01-13 13:26 ?1次下載
    C語(yǔ)言學(xué)習(xí)筆記---<b class='flag-5'>typedef</b> 簡(jiǎn)介

    C語(yǔ)言中的typedef的用法

    在以前的學(xué)習(xí)中對(duì)于C語(yǔ)言中typedef和define的認(rèn)識(shí)是,#define是宏,作用是簡(jiǎn)單的替換,而typedef也是替換,只不過(guò)比define高級(jí)的是在替換的時(shí)候會(huì)進(jìn)行語(yǔ)法檢查。但是后來(lái)
    發(fā)表于 01-13 13:36 ?0次下載
    C語(yǔ)言中的<b class='flag-5'>typedef</b>的用法

    typedef與#define有什么差異嗎

    大部分朋友在編寫代碼的時(shí)候都會(huì)把無(wú)符號(hào)類型、結(jié)構(gòu)體等等進(jìn)行"簡(jiǎn)化",要么用宏定義進(jìn)行文本替換,要么就通過(guò)typedef來(lái)定義一個(gè)類型別名。
    的頭像 發(fā)表于 08-11 14:34 ?1301次閱讀
    <b class='flag-5'>typedef</b>與#define有什么差異嗎

    C語(yǔ)言中的typedef的應(yīng)用

    C 語(yǔ)言提供了 typedef 關(guān)鍵字,您可以使用它來(lái)為類型取一個(gè)新的名字。下面的實(shí)例為單字節(jié)數(shù)字定義了一個(gè)術(shù)語(yǔ) BYTE。
    發(fā)表于 03-06 11:34 ?323次閱讀
    C語(yǔ)言中的<b class='flag-5'>typedef</b>的應(yīng)用