在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Keil MDK中enum類型數(shù)據(jù)大小的問題

            Keil MDK中enum類型數(shù)據(jù)大小的問題

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

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

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

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

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

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

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

            • 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

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉