日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

typedef與#define有什么差異嗎

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-11 14:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1、typedef與#define

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

參考代碼:

pYYBAGL0oiKAF0AlAAB94J8Fr1A803.png

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

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

那么這里就舉個例子:

參考代碼:

pYYBAGL0ojWAIYyfAACxDZDrVcM678.png

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

pYYBAGL0okeALeqiAAB-_jnV8V4600.png

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

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

參考代碼:

pYYBAGL0olqAKaiNAACU8LglwYI762.png

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

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

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

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

參考代碼:

poYBAGL0onSAPD6gAAEL4i4ezEU399.png

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

poYBAGL0ooWARUSBAAB0FqdAZz0370.png



審核編輯:劉清

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

    關(guān)注

    6

    文章

    1041

    瀏覽量

    57155
  • typedef
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9903
  • float
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8022
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)IO配置不同速度啥區(qū)別

    3個,有些4個。一般定義在xxx_gpio.h文件中。 #define GPIO_Speed_2MHzGPIO_Speed_Level_1/*!< I/O
    發(fā)表于 12-29 07:45

    Typedef在C語言中的應(yīng)用

    Typedef 在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預(yù)處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef
    發(fā)表于 12-22 13:53

    typedef結(jié)構(gòu)體使用

    雖然結(jié)構(gòu)體的出現(xiàn)能夠讓我們一個更科學(xué)的數(shù)據(jù)結(jié)構(gòu)來管理數(shù)據(jù),但是每次使用結(jié)構(gòu)體都需要struct...,未免顯得有些冗長和麻煩。typedef的助攻,我們就可以很輕松地給結(jié)構(gòu)體類型起一個容易理解
    發(fā)表于 12-08 07:04

    #define預(yù)編譯的指令

    #define預(yù)編譯指令 顧名思義,這個指令的含義是“定義”,大家可以把該指令視為一種文本的替換。詳細(xì)在下面代碼展示 [list=1] [*]//使用該指令定義了一個數(shù) [*]#define
    發(fā)表于 12-05 07:29

    復(fù)合光纜和光纖的區(qū)別差異大嗎

    復(fù)合光纜(通常指光電復(fù)合纜)與光纖在結(jié)構(gòu)、功能、應(yīng)用場景、成本及安裝維護(hù)方面存在顯著差異,具體如下: 一、結(jié)構(gòu)差異 光纖:由纖芯(高純度二氧化硅或塑料)、包層(折射率略低)和涂覆層(聚合物保護(hù))構(gòu)成
    的頭像 發(fā)表于 10-13 10:57 ?3383次閱讀

    是德科技PathWave和納米軟件ATECLOUD哪些差異?

    平臺,主要針對儀器儀表的自動化測試以及提供電源模塊、芯片、射頻器件的自動化測試解決方案。這兩個電子測試軟件平臺在定位功能、測試場景、架構(gòu)部署方面有著明顯差異。 是德科技PathWave 定位與目標(biāo): PathWave: 是一個綜合性的電子設(shè)計和測試軟件平臺。它覆蓋了從設(shè)計仿
    的頭像 發(fā)表于 09-08 17:23 ?1174次閱讀
    是德科技PathWave和納米軟件ATECLOUD<b class='flag-5'>有</b>哪些<b class='flag-5'>差異</b>?

    不同類型的電能質(zhì)量在線監(jiān)測裝置數(shù)據(jù)驗(yàn)證頻率差異

    ? 電能質(zhì)量在線監(jiān)測裝置的類型劃分,通?;?應(yīng)用場景(電網(wǎng)側(cè) / 用戶側(cè))、監(jiān)測功能(通用型 / 專項型)、電壓等級(高壓 / 中低壓) 三大維度。不同類型裝置的核心差異在于 “數(shù)據(jù)用途的關(guān)鍵程度
    的頭像 發(fā)表于 09-04 11:55 ?680次閱讀

    屏蔽雙絞線哪些種類?存在哪些差異

    屏蔽雙絞線根據(jù)屏蔽方式的不同,主要分為以下種類,每種在結(jié)構(gòu)、性能和適用場景上存在差異: 1. F/UTP(鋁箔總屏蔽雙絞線) 結(jié)構(gòu):在8芯雙絞線外層包裹一層鋁箔,鋁箔導(dǎo)電面鋪設(shè)接地導(dǎo)線,無獨(dú)立線
    的頭像 發(fā)表于 08-20 10:38 ?3810次閱讀

    鉛VS無鉛:PCBA加工工藝的6大核心差異,工程師必看

    一站式PCBA加工廠家今天為大家講講PCBA加工鉛工藝與無鉛工藝差異哪些?PCBA加工鉛工藝與無鉛工藝的六大差異。作為擁有20余年P(guān)C
    的頭像 發(fā)表于 08-08 09:25 ?990次閱讀

    萬兆多模光纖傳輸距離哪些差異

    萬兆多模光纖的傳輸距離因光纖類型和應(yīng)用場景不同而有所差異,具體如下: 一、按光纖類型劃分 OM3光纖 帶寬:2000 MHz·km 傳輸距離: 在10 Gbps應(yīng)用中,最大傳輸距離為 300米
    的頭像 發(fā)表于 08-07 09:48 ?2453次閱讀

    自動化測試平臺中TestCenter和ATECLOUD哪些差異?

    TestCenter和ATECLOUD雖然都是自動化測試平臺,但兩者在試用領(lǐng)域、技術(shù)架構(gòu)、功能特性等方面具有很大的差異性,兩者的面向客戶也有所不同。本文將簡單分析兩個平臺的特點(diǎn)和差異
    的頭像 發(fā)表于 07-25 09:54 ?891次閱讀
    自動化測試平臺中TestCenter和ATECLOUD<b class='flag-5'>有</b>哪些<b class='flag-5'>差異</b>?

    鐵芯VS無鐵芯:直線電機(jī)模組核心差異全解析

    在直線電機(jī)模組的大家族中,鐵芯直線電機(jī)模組和無鐵芯直線電機(jī)模組是兩種常見且各具特色的類型。它們在結(jié)構(gòu)設(shè)計、性能表現(xiàn)以及應(yīng)用場景等方面存在顯著差異,了解這些差異對于在實(shí)際應(yīng)用中做出合適的選擇至關(guān)重要
    的頭像 發(fā)表于 07-22 11:37 ?1903次閱讀
    <b class='flag-5'>有</b>鐵芯VS無鐵芯:直線電機(jī)模組核心<b class='flag-5'>差異</b>全解析

    ArkUI-X平臺差異

    邏輯不同,或使用了不支持跨平臺的API,就需要根據(jù)平臺不同進(jìn)行一定代碼差異化適配。當(dāng)前僅支持在代碼運(yùn)行態(tài)進(jìn)行差異化,接下來詳細(xì)介紹場景及如何差異化適配。 使用場景 平臺差異化適用于以下
    發(fā)表于 06-10 23:08

    配置文件的差異介紹

    配置文件的差異 FA模型應(yīng)用在config.json文件中描述應(yīng)用的基本信息,一個應(yīng)用工程中可以創(chuàng)建多個Module,每個Module中都有一份config.json文件。config.json由
    發(fā)表于 06-05 06:50

    RoHS與ELV什么差異?

    RoHS的標(biāo)準(zhǔn)RoHS(RestrictionofHazardousSubstances)是一項由歐盟立法制定的強(qiáng)制性標(biāo)準(zhǔn),全稱為《關(guān)于限制在電子電氣設(shè)備中使用某些有害成分的指令》。該標(biāo)準(zhǔn)的核心目標(biāo)是限制在電子電氣產(chǎn)品制造過程中使用特定的有害物質(zhì),以減少對環(huán)境和人類健康的潛在危害。RoHS標(biāo)準(zhǔn)的應(yīng)用范圍RoHS指令涵蓋了廣泛的產(chǎn)品類別,包括但不限于大型家用電
    的頭像 發(fā)表于 05-12 15:44 ?1616次閱讀
    RoHS與ELV<b class='flag-5'>有</b>什么<b class='flag-5'>差異</b>?
    汕头市| 招远市| 沁源县| 大安市| 龙泉市| 贵德县| 安化县| 水城县| 湖南省| 南部县| 方城县| 桐庐县| 安新县| 揭东县| 岚皋县| 富阳市| 德昌县| 松滋市| 永靖县| 五寨县| 五峰| 长春市| 闽清县| 井研县| 左贡县| 安化县| 惠安县| 乌兰县| 图们市| 德化县| 鄯善县| 土默特左旗| 毕节市| 平顺县| 成都市| 雅安市| 南部县| 宣威市| 玉溪市| 扬州市| 舞阳县|