<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Keil MDK中enum類(lèi)型數據大小的問(wèn)題

Keil MDK中enum類(lèi)型數據大小的問(wèn)題

作者: 時(shí)間:2023-12-18 來(lái)源:歐工玩轉嵌入式 收藏

  使用枚舉是一個(gè)避免在程序中出現幻數的好方法,應該在代碼中避免出現未解釋的數值。在單片機編程中,尤其是在編寫(xiě)通信協(xié)議時(shí),常常使用枚舉來(lái)定義諸如命令等字段。這時(shí)有個(gè)問(wèn)題就必須要提出了,C語(yǔ)言中類(lèi)型到底占多少字節?我們給命令字段預留的字節大小必須和類(lèi)型大小一致才能保證通信協(xié)議在字節流層面上正確。
  關(guān)于類(lèi)型究竟占用多少字節,答案是不確定。C語(yǔ)言標準規定枚舉必須是整數類(lèi)型,但卻沒(méi)有規定枚舉類(lèi)型必須占多少字節。枚舉類(lèi)型占用多少字節,取決于每個(gè)編譯器的實(shí)現。有可能占8字節,16字節,32字節,甚至64字節。其他編譯器我們不做討論,下面只介紹 MDK中enum類(lèi)型大小的問(wèn)題。

本文引用地址:http://dyxdggzs.com/article/202312/453990.htm

   MDK中對enum類(lèi)型大小的分配原則是能夠包含所有枚舉元素的最小整形,即剛好夠用的整形實(shí)現。什么意思呢?就是如果一個(gè)unsigned char能夠包含枚舉元素的所有情況,那就用unsigned char作為其大小。如果要unsigned int才能包含的話(huà),那就以unsigned int作為其大小。下面用代碼直觀(guān)體現一下:

在char能包含枚舉元素的情況下枚舉大小為1字節

在int能包含枚舉元素的情況下枚舉大小為4字節

  上面只是簡(jiǎn)單說(shuō)明。對于enum類(lèi)型的大小和符號, MDK有更詳細的規定。在C模式或者不帶--enum_is_int的C++模式下,如果枚舉元素只包含正整數,那么enum的存儲類(lèi)型為下表第一個(gè)能匹配元素數值的unsigned類(lèi)型。在其他模式或者枚舉元素有負數的情況下,enum的存儲類(lèi)型為下表第一個(gè)匹配元素數值的signed類(lèi)型:

  • unsigned char if not using --enum_is_int

  • signed char if not using --enum_is_int

  • unsigned short if not using --enum_is_int

  • signed short if not using --enum_is_int

  • signed int

  • unsigned int except C with --strict

  • signed long long except C with --strict

  • unsigned long long except C with --strict.




關(guān)鍵詞: Keil MCU enum

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>