女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    967

    瀏覽量

    55487
  • typedef
    +關注

    關注

    0

    文章

    26

    瀏覽量

    9676
  • float
    +關注

    關注

    0

    文章

    9

    瀏覽量

    7865
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    不同行業的數字工廠哪些特點和差異

    各行業的獨特差異也將持續推動定制化解決方案的創新,以滿足不同行業日益增長的數字化轉型需求。對于設備管理系統而言,需要深入理解各行業數字工廠的特點和差異,針對性地進行優化和升級,為各行業數字工廠的穩定運行和高效發展提供堅實保障。
    的頭像 發表于 04-17 10:29 ?202次閱讀
    不同行業的數字工廠<b class='flag-5'>有</b>哪些特點和<b class='flag-5'>差異</b>?

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

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

    DAC108S085設定為第一級輸出時,不同通道差異,為什么?

    DAC108S085設定為第一級輸出時,不同通道差異 1.24V基準 ABCD四個通道都接近1.2mV EFG接近0.9mV H是0.3mV DAC的偏差是越靠后越大?
    發表于 12-18 07:18

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

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

    SV中define宏定義的用法

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

    LC濾波器和RC濾波器哪些差異

    LC濾波器和RC濾波器是電子工程中常見的兩種濾波器類型,它們在電路結構、工作原理、性能特點以及應用場合等方面存在顯著的差異
    的頭像 發表于 09-27 15:26 ?3594次閱讀

    LM358M和LM358MX什么差異

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

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

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

    串口服務器與交換機什么差異

    串口服務器與交換機作為網絡硬件設備的重要組成部分,各自在網絡構建和數據通信中扮演著不同的角色。它們之間在功能、適用場景、端口數量、通信協議、價格等多個方面存在顯著差異
    的頭像 發表于 08-25 18:00 ?1957次閱讀

    typedef和struct啥區別

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

    typedef struct和直接struct的區別

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

    直流電與交流電什么差異

    直流電(Direct Current,簡稱DC)與交流電(Alternating Current,簡稱AC)是電力傳輸和使用中兩種基本的電流形式,它們在多個方面存在顯著差異。以下是對直流電與交流電區別的詳細闡述,內容將超過2000字,但將盡量保持條理清晰、信息豐富。
    的頭像 發表于 08-14 11:01 ?4131次閱讀

    tvs管單向雙向什么差異

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

    IO與PLC的差異及應用

    為您介紹io模塊與PLC的差異及其各自的應用場景
    的頭像 發表于 07-18 15:54 ?2314次閱讀
    IO與PLC的<b class='flag-5'>差異</b>及應用

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

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