在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

typedef與#define有什么差異嗎

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-11 14:34 ? 次閱讀

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

1、typedef與#define

大部分朋友在編寫代碼的時候都會把無符號類型、結構體等等進行"簡化",要么用宏定義進行文本替換,要么就通過typedef來定義一個類型別名。

參考代碼:

pYYBAGL0oiKAF0AlAAB94J8Fr1A803.png

似乎在一般人眼里兩種方式并沒有什么區別,有些人習慣用宏,有些人習慣用typedef,甚至一套代碼中還出現兩種定義,不過使用typedef來兼容不同平臺的類型更加的專業。

兩者的區別其實還是很明顯的,只是大部分人在編碼的過程中沒有遇到兩者差異的情況,

那么這里就舉個例子:

參考代碼:

pYYBAGL0ojWAIYyfAACxDZDrVcM678.png

如果typedef與#define沒啥差異的話,那么測試代碼中的Var1與Var2使用方法應該是一樣的,但當我們使用var2進行賦值則編譯不通過。

pYYBAGL0okeALeqiAAB-_jnV8V4600.png

編譯結果出來你應該就明白了,typedef把整個int*作為了一個整體,與基本類型int,float等一樣,此時const修飾的是Var2變量,與int * const等價,其指針所指向的地址無法改變,但內容*Var的內容可以進行修改。

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

參考代碼:

pYYBAGL0olqAKaiNAACU8LglwYI762.png

問題就處在pVar4的定義上,此時pVar4僅僅只是一個int類型而非int*類型,這也是宏定義所帶來的弊端。

這樣大家應該對typedef定義的整體類型與#define定義的宏有了一個較好的理解了吧。

2、數組類型是typdef專屬?

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

參考代碼:

poYBAGL0onSAPD6gAAEL4i4ezEU399.png

因為宏定義無法像普通定義變量那樣:"類型變量"的形式,所以認為同事的說法也算對,不過對于如上面代碼的宏定義來定義變量,其實也差別不大吧。

poYBAGL0ooWARUSBAAB0FqdAZz0370.png



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    957

    瀏覽量

    54911
  • typedef
    +關注

    關注

    0

    文章

    26

    瀏覽量

    9558
  • float
    +關注

    關注

    0

    文章

    9

    瀏覽量

    7785
收藏 人收藏

    評論

    相關推薦

    C++ QT開發,IC讀寫器程序

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

    ESD HBM測試差異較大的結果分析

    ESD HBM測試結果差異較大的原因,通常包括設備/儀器差異、?校準和維護水平不同、?環境條件差異、?測試樣本差異、?測試操作員技能和經驗差異
    的頭像 發表于 11-18 15:17 ?561次閱讀
    ESD HBM測試<b class='flag-5'>差異</b>較大的結果分析

    SV中define宏定義的用法

    SV中使用預處理指令`define來定義宏,宏可以用來創建文本替換。根據場景不同,`define主要用來定義常量、簡化復雜的表達式或代碼段以及提高代碼的可移植性。其基本語法為:
    的頭像 發表于 10-21 14:22 ?755次閱讀

    LM358M和LM358MX什么差異?

    請教一下,LM358M / MX差異
    發表于 09-24 06:02

    不同行業的配電室什么差異

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

    typedef和struct啥區別

    在C語言中, typedef 和 struct 是兩個非常重要的關鍵字,它們在定義數據結構時扮演著關鍵的角色。然而,它們之間一些明顯的區別。 1. struct 關鍵字 struct (結構體
    的頭像 發表于 08-20 11:00 ?1320次閱讀

    typedef struct和直接struct的區別

    在C語言中, typedef 和 struct 是兩種不同的關鍵字,它們在定義和使用上有著明顯的區別。 typedef struct 和直接 struct 在 C 語言中用于定義結構體類型,但它們在
    的頭像 發表于 08-20 10:58 ?3070次閱讀

    tvs管單向雙向什么差異

    可以分為單向TVS和雙向TVS兩種類型,它們在結構、工作原理、應用場景等方面存在一些差異。 一、單向TVS和雙向TVS的結構差異 單向TVS的結構 單向TVS管是一種單極性的保護器件,其內部結構主要由一個PN結組成。PN結的一端連接到陽極,另一端連接到陰極。當陽極電壓高于
    的頭像 發表于 08-01 09:42 ?2305次閱讀

    開關柜和環網柜之間哪什么差異?

    開關柜、環網柜之間的差異分析
    的頭像 發表于 07-16 15:37 ?613次閱讀
    開關柜和環網柜之間<b class='flag-5'>有</b>哪什么<b class='flag-5'>差異</b>?

    FSMC_Bank1和FSMC_Bank1E沒有定義是怎么回事?

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

    QNX與Linux基礎差異對比

    對于QNX系統和Linux系統的內核差異,我們拋開宏內核、微內核之類的爭議不談。單純從開發應用的角度而言,QNX和Linux系統的差異到底多大,在開發的時候需要注意哪些細節問題?
    發表于 04-17 10:52 ?877次閱讀

    C語言中的typedef的應用

    C 語言提供了 typedef 關鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節數字定義了一個術語 BYTE。
    發表于 03-06 11:34 ?426次閱讀
    C語言中的<b class='flag-5'>typedef</b>的應用

    求助,英飛凌單片機程序開發和STM32程序開發之間多少差異

    英飛凌單片機程序開發和STM32程序開發之間多少差異?英飛凌單片機有沒有類似庫函數的東西?
    發表于 02-05 07:14

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

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

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

    板式換熱器和管式換熱器的差異哪些? 板式換熱器和管式換熱器是兩種常見的換熱設備,用于在工業生產中進行熱能傳遞。它們在結構、工作原理、適用場合等方面存在一些差異。接下來將詳細介紹板式換熱器和管式
    的頭像 發表于 01-30 17:26 ?3438次閱讀
    主站蜘蛛池模板: 五月天婷婷在线免费观看 | 美女视频黄视大全视频免费网址 | 视频免费在线 | 欧美午夜场 | 激情婷婷在线 | 天天更新影院 | 久久国产高清字幕中文 | 五月婷婷六月合 | 色老头久久网 | 黑人破乌克兰美女处 | 二级黄绝大片中国免费视频0 | 国产做a爰片久久毛片a | 琪琪see色原网一区二区 | av网址在线看 | 久久综合欧美 | 欧美人与zoxxxx另类9 | 正在播放淫亚洲 | 日操夜干 | 可以免费看黄色的网站 | 唯美久草| 午夜影视免费完整高清在线观看网站 | www午夜视频| 色播久久| 人人艹人人射 | 性午夜影院 | 国产日本久久久久久久久婷婷 | 国产三级在线观看免费 | 日本天堂影院在线播放 | 男女性生动态免费视频 | 美女视频网站色 | 日本xxxx色视频在线观看免费 | xxx亚洲日本 | 天天射天天射 | 天天爽天天色 | aa毛片 | 亚洲一区二区在线 | 欧美一区二区三区精品 | 欧美影院在线 | 国产农村一级特黄α真人毛片 | 99久久综合 | 久久精品国产2020观看福利色 |