色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

typedef與#define有什么差異嗎

冬至配餃子 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2022-08-11 14:34 ? 次閱讀

最近在開發(fā)中使用typedef的時(shí)候掉了一次坑,這里記錄一下同時(shí)分享給大家~

1、typedef與#define

大部分朋友在編寫代碼的時(shí)候都會(huì)把無(wú)符號(hào)類型、結(jié)構(gòu)體等等進(jìn)行"簡(jiǎn)化",要么用宏定義進(jìn)行文本替換,要么就通過(guò)typedef來(lái)定義一個(gè)類型別名。

參考代碼:

pYYBAGL0oiKAF0AlAAB94J8Fr1A803.png

似乎在一般人眼里兩種方式并沒(méi)有什么區(qū)別,有些人習(xí)慣用宏,有些人習(xí)慣用typedef,甚至一套代碼中還出現(xiàn)兩種定義,不過(guò)使用typedef來(lái)兼容不同平臺(tái)的類型更加的專業(yè)。

兩者的區(qū)別其實(shí)還是很明顯的,只是大部分人在編碼的過(guò)程中沒(méi)有遇到兩者差異的情況,

那么這里就舉個(gè)例子:

參考代碼:

pYYBAGL0ojWAIYyfAACxDZDrVcM678.png

如果typedef與#define沒(méi)啥差異的話,那么測(cè)試代碼中的Var1與Var2使用方法應(yīng)該是一樣的,但當(dāng)我們使用var2進(jìn)行賦值則編譯不通過(guò)。

pYYBAGL0okeALeqiAAB-_jnV8V4600.png

編譯結(jié)果出來(lái)你應(yīng)該就明白了,typedef把整個(gè)int*作為了一個(gè)整體,與基本類型int,float等一樣,此時(shí)const修飾的是Var2變量,與int * const等價(jià),其指針?biāo)赶虻牡刂窡o(wú)法改變,但內(nèi)容*Var的內(nèi)容可以進(jìn)行修改。

同樣還有一個(gè)類似且非常值得注意的地方:

參考代碼:

pYYBAGL0olqAKaiNAACU8LglwYI762.png

問(wèn)題就處在pVar4的定義上,此時(shí)pVar4僅僅只是一個(gè)int類型而非int*類型,這也是宏定義所帶來(lái)的弊端。

這樣大家應(yīng)該對(duì)typedef定義的整體類型與#define定義的宏有了一個(gè)較好的理解了吧。

2、數(shù)組類型是typdef專屬?

順便問(wèn)了一下同事:你覺(jué)得typedef還有與#define不同的地方嗎?他想了想,回答道 : typedef可以直接定義數(shù)組類型,而#define不能。他的回答也對(duì),但是也不完全對(duì):

參考代碼:

poYBAGL0onSAPD6gAAEL4i4ezEU399.png

因?yàn)楹甓x無(wú)法像普通定義變量那樣:"類型變量"的形式,所以認(rèn)為同事的說(shuō)法也算對(duì),不過(guò)對(duì)于如上面代碼的宏定義來(lái)定義變量,其實(shí)也差別不大吧。

poYBAGL0ooWARUSBAAB0FqdAZz0370.png



審核編輯:劉清

聲明:本文內(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)注

    6

    文章

    946

    瀏覽量

    54870
  • typedef
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9554
  • float
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7785
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C++ QT開發(fā),IC讀寫器程序

    0x10#define NEEDHALT 0x20 //#define NEEDSERIAL 0x08#define EXTERNKEY 0x10 //讓讀寫器發(fā)出聲音typedef
    的頭像 發(fā)表于 12-30 14:55 ?89次閱讀
    C++ QT開發(fā),IC讀寫器程序

    ESD HBM測(cè)試差異較大的結(jié)果分析

    ESD HBM測(cè)試結(jié)果差異較大的原因,通常包括設(shè)備/儀器差異、?校準(zhǔn)和維護(hù)水平不同、?環(huán)境條件差異、?測(cè)試樣本差異、?測(cè)試操作員技能和經(jīng)驗(yàn)差異
    的頭像 發(fā)表于 11-18 15:17 ?490次閱讀
    ESD HBM測(cè)試<b class='flag-5'>差異</b>較大的結(jié)果分析

    SV中define宏定義的用法

    SV中使用預(yù)處理指令`define來(lái)定義宏,宏可以用來(lái)創(chuàng)建文本替換。根據(jù)場(chǎng)景不同,`define主要用來(lái)定義常量、簡(jiǎn)化復(fù)雜的表達(dá)式或代碼段以及提高代碼的可移植性。其基本語(yǔ)法為:
    的頭像 發(fā)表于 10-21 14:22 ?644次閱讀

    LM358M和LM358MX什么差異

    請(qǐng)教一下,LM358M / MX差異
    發(fā)表于 09-24 06:02

    不同行業(yè)的配電室什么差異

    蜀瑞創(chuàng)新:不同行業(yè)的配電室在多個(gè)方面存在顯著的差異,這些差異主要體現(xiàn)在配電室的規(guī)模、功能、設(shè)備配置、安全性要求以及運(yùn)行管理等方面。每種類型的配電室都會(huì)根據(jù)具體的應(yīng)用場(chǎng)景和行業(yè)特點(diǎn)進(jìn)行定制化設(shè)計(jì)。
    的頭像 發(fā)表于 08-29 16:55 ?294次閱讀
    不同行業(yè)的配電室<b class='flag-5'>有</b>什么<b class='flag-5'>差異</b>?

    typedef和struct啥區(qū)別

    在C語(yǔ)言中, typedef 和 struct 是兩個(gè)非常重要的關(guān)鍵字,它們?cè)诙x數(shù)據(jù)結(jié)構(gòu)時(shí)扮演著關(guān)鍵的角色。然而,它們之間一些明顯的區(qū)別。 1. struct 關(guān)鍵字 struct (結(jié)構(gòu)體
    的頭像 發(fā)表于 08-20 11:00 ?1259次閱讀

    typedef struct和直接struct的區(qū)別

    在C語(yǔ)言中, typedef 和 struct 是兩種不同的關(guān)鍵字,它們?cè)诙x和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C 語(yǔ)言中用于定義結(jié)構(gòu)體類型,但它們?cè)?/div>
    的頭像 發(fā)表于 08-20 10:58 ?2920次閱讀

    tvs管單向雙向什么差異

    可以分為單向TVS和雙向TVS兩種類型,它們?cè)诮Y(jié)構(gòu)、工作原理、應(yīng)用場(chǎng)景等方面存在一些差異。 一、單向TVS和雙向TVS的結(jié)構(gòu)差異 單向TVS的結(jié)構(gòu) 單向TVS管是一種單極性的保護(hù)器件,其內(nèi)部結(jié)構(gòu)主要由一個(gè)PN結(jié)組成。PN結(jié)的一端連接到陽(yáng)極,另一端連接到陰極。當(dāng)陽(yáng)極電壓高于
    的頭像 發(fā)表于 08-01 09:42 ?2158次閱讀

    開關(guān)柜和環(huán)網(wǎng)柜之間哪什么差異

    開關(guān)柜、環(huán)網(wǎng)柜之間的差異分析
    的頭像 發(fā)表于 07-16 15:37 ?561次閱讀
    開關(guān)柜和環(huán)網(wǎng)柜之間<b class='flag-5'>有</b>哪什么<b class='flag-5'>差異</b>?

    FSMC_Bank1和FSMC_Bank1E沒(méi)有定義是怎么回事?

    (STM32F429_439xx) #define FMC_Bank1((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE) #define FMC_Bank1E
    發(fā)表于 05-15 08:00

    QNX與Linux基礎(chǔ)差異對(duì)比

    對(duì)于QNX系統(tǒng)和Linux系統(tǒng)的內(nèi)核差異,我們拋開宏內(nèi)核、微內(nèi)核之類的爭(zhēng)議不談。單純從開發(fā)應(yīng)用的角度而言,QNX和Linux系統(tǒng)的差異到底多大,在開發(fā)的時(shí)候需要注意哪些細(xì)節(jié)問(wèn)題?
    發(fā)表于 04-17 10:52 ?804次閱讀

    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 ?397次閱讀
    C語(yǔ)言中的<b class='flag-5'>typedef</b>的應(yīng)用

    求助,英飛凌單片機(jī)程序開發(fā)和STM32程序開發(fā)之間多少差異

    英飛凌單片機(jī)程序開發(fā)和STM32程序開發(fā)之間多少差異?英飛凌單片機(jī)有沒(méi)有類似庫(kù)函數(shù)的東西?
    發(fā)表于 02-05 07:14

    BUCK電路輕載條件下DCM與CCM的差異哪些?

    BUCK電路輕載條件下DCM與CCM的差異哪些? 在討論BUCK電路輕載條件下DCM(不連續(xù)導(dǎo)通模式)與CCM(連續(xù)導(dǎo)通模式)的差異之前,我們首先要了解BUCK電路的工作原理和兩種不同的工作模式
    的頭像 發(fā)表于 01-31 18:18 ?2462次閱讀

    板式換熱器和管式換熱器的差異哪些?

    板式換熱器和管式換熱器的差異哪些? 板式換熱器和管式換熱器是兩種常見的換熱設(shè)備,用于在工業(yè)生產(chǎn)中進(jìn)行熱能傳遞。它們?cè)诮Y(jié)構(gòu)、工作原理、適用場(chǎng)合等方面存在一些差異。接下來(lái)將詳細(xì)介紹板式換熱器和管式
    的頭像 發(fā)表于 01-30 17:26 ?3331次閱讀
    主站蜘蛛池模板: 久久视热频国只有精品| 女人麻豆国产香蕉久久精品| 高H高肉强J短篇校园| 高龄熟女50P| 国产精品视频免费观看| 国产原创中文视频| 久久精品视频uu| 嫩草国产精品99国产精品| 青青青青久久久久国产的| 日韩1区1区产品乱码芒果榴莲| 十九禁啊啪射视频在线观看| 小荡娃奶真大| 诱受H嗯啊巨肉舍友1V1| 99久免费精品视频在线观看2| 成人伊人青草久久综合网| 国产精品自拍| 久久视热频国产这里只有精品23| 欧美日韩一区不卡在线观看| 双性精跪趴灌满h室友4p| 亚洲精品无码不卡| 92国产精品午夜免费福利视频| 岛国精品在线观看| 好爽胸大好深好多水| 年轻夫妇韩剧中文版免费观看 | 5g在线视讯年龄确认海外禁止进入 | 国产性夜夜春夜夜爽1A片 | 厕所RXXX| 黄色网址在线播放| 嫩小xxxxbbbb| 亚洲AV国产精品无码精| 最新国自产拍天天更新| 东京热无码中文字幕av专区| 久久 这里只精品 免费| 日本国产黄色片| 夜色视频社区| 丰满人妻熟女色情A片| 久久草这里全是精品香蕉频线观| 欧美尤物射精集锦| 亚洲一区电影在线观看| 超碰在线视频| 久久久久久久伊人电影|