中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

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

        作者: 時間:2023-12-18 來源:歐工玩轉嵌入式 收藏

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

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

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

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

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

          上面只是簡單說明。對于enum類型的大小和符號, MDK有更詳細的規(guī)定。在C模式或者不帶--enum_is_int的C++模式下,如果枚舉元素只包含正整數(shù),那么enum的存儲類型為下表第一個能匹配元素數(shù)值的unsigned類型。在其他模式或者枚舉元素有負數(shù)的情況下,enum的存儲類型為下表第一個匹配元素數(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.




        關鍵詞: Keil MCU enum

        評論


        相關推薦

        技術專區(qū)

        關閉