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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

枚舉類型的簡單擴展學習

冬至子 ? 來源:吾愛單片機 ? 作者:echigh ? 2023-05-25 15:45 ? 次閱讀

枚舉類型的使用分兩步:

1.定義一個特定的枚舉類型

2.定義該枚舉類型的變量并使用

以下學習內容均已經過實測:

1.定義枚舉類型的值只能是整型常量,正數、負數和零都可以,但不可以是浮點數

2.對枚舉類型做sizeof試驗:

(1)我在stm32單片機上試驗,也即ARM編譯器上,枚舉類型的存儲大小按定義的值里面需要占內存最大的給,即1、2、4、8都有可能,遵循夠用原則

(2)而在windows上試驗,即GNU GCC編譯器上,枚舉類型的存儲大小固定為4(但當定義中有超過4個字節(jié)大小的值時,存儲大小變?yōu)?)

(3)無論哪個編譯器,枚舉類型的值最長只能為8個字節(jié),更長的大小不接受

試驗參考代碼,可以自己改定義中的值大小去測結果:

enum DAY
{
  MON = 0, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
int main()
{
  printf("sizeof(day):%d\\r\\n", sizeof(day));
  printf("sizeof(enum DAY):%d\\r\\n", sizeof(enum DAY));
  getchar();
}

3.如何用extern修飾枚舉類型

(1)錯誤的修飾代碼,在類型的定義前加extern將起不到任何作用,因為extern是用來修飾變量的。以下代碼不會報錯,但會警告,extern出現(xiàn)在這里起不到任何作用

extern enum DAY
{
  MON = 0, TUE, WED, THU, FRI, SAT, SUN
};

(2)正確的修飾代碼,在枚舉變量定義前加extern

extern enum DAY day;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM芯片
    +關注

    關注

    1

    文章

    125

    瀏覽量

    21407
  • GNU
    GNU
    +關注

    關注

    0

    文章

    143

    瀏覽量

    17438
  • STM32單片機
    +關注

    關注

    58

    文章

    549

    瀏覽量

    58567
  • gcc編譯器
    +關注

    關注

    0

    文章

    78

    瀏覽量

    3338
收藏 人收藏

    評論

    相關推薦

    使用枚舉類型表示狀態(tài)機進入死循環(huán)

    在定義狀態(tài)機中的狀態(tài)時,除了可以使用宏(define)或者參數(parameter)聲明定義外,還可以使用枚舉類型
    的頭像 發(fā)表于 11-07 17:46 ?865次閱讀
    使用<b class='flag-5'>枚舉</b><b class='flag-5'>類型</b>表示狀態(tài)機進入死循環(huán)

    C語言必備知識枚舉

    枚舉類型是ANSI C新標準所增加的。如果一個變量只有幾種可能的值,可以定義為枚舉類型。所謂“枚舉是指將變量的值一一列舉出來,變量的值只限于
    的頭像 發(fā)表于 11-29 16:07 ?706次閱讀

    labview中的基本函數發(fā)生器應用時信號類型接線枚舉有誤

    各位好,我是一個labview初學者,在學習利用基本函數發(fā)生器編寫程序時,信號類型一連線接枚舉控件,結果出現(xiàn)“枚舉沖突”,不知是為何?請高手指導,多謝。上傳了一個連線后的
    發(fā)表于 03-15 20:36

    labview小白求教枚舉類型控件

    學習labview還才3天,看的書是《labview寶典》,現(xiàn)在正好看到78頁,關于“獲取日期/時間字符串”函數,其中說到日期格式是枚舉類型,但是我實際測試,給枚舉控件插入了三個項,值
    發(fā)表于 12-20 21:01

    詳細講解c語言enum枚舉類型

    詳細講解C語言enum枚舉類型在實際應用中,有的變量只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變量可以定義為枚舉類型。所謂
    發(fā)表于 12-21 23:22

    枚舉類型最后面增加項報錯

    各位大神:我的枚舉類型RadioState,在最后面增加一項,之后程序中很多用到RadioState的地方報錯,這個是什么原因造成的?下圖是我沒有改之前的枚舉類型信息:下圖是我添加了一
    發(fā)表于 05-15 12:02

    深入理解java枚舉類型enum用法

    ; StringFRI = Fri; StringSAT = Sat; StringSUN = Sun; } 語法(定義) 創(chuàng)建枚舉類型要使用 enum 關鍵字,隱含了所創(chuàng)建的類型都是 java.lang.Enum 類
    發(fā)表于 09-27 11:49 ?0次下載

    枚舉是C語言中的一種基本數據類型

    在C語言中,枚舉類型是被當做 int 或者 unsigned int 類型來處理的,所以按照 C 語言規(guī)范是沒有辦法遍歷枚舉類型的。不過在一
    的頭像 發(fā)表于 09-25 15:45 ?8597次閱讀
    <b class='flag-5'>枚舉</b>是C語言中的一種基本數據<b class='flag-5'>類型</b>

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細講解。 枚舉,是一種重要的數據
    的頭像 發(fā)表于 09-02 09:43 ?5122次閱讀

    數字硬件建模SystemVerilog-枚舉數據類型

    上一節(jié)介紹了已經被淘汰的$unit聲明空間,今天我們來看看一種重要的數據類型-枚舉數據類型
    的頭像 發(fā)表于 07-01 17:44 ?1615次閱讀

    SystemVerilog中枚舉類型的使用建議

    SystemVerilog中枚舉類型雖然屬于一種“強類型”,但是枚舉類型還是提供了一些“不正經”的用法可以實現(xiàn)一些很常見的功能,本文將示例一
    的頭像 發(fā)表于 09-01 14:20 ?1576次閱讀

    淺析SystemVerilog中的枚舉類型

    枚舉類型定義了一組具有名稱的值,在沒有指定值時默認是int型數值。
    的頭像 發(fā)表于 10-13 09:44 ?1498次閱讀

    Java枚舉的特點及用法

    在 Java 枚舉出現(xiàn)之前,通常會使用常量類來表示一組固定的常量值,直到Java 1.5之后推出了枚舉,那么枚舉類型有哪些特點,它比常量類又好在哪里呢。 本文將分析一下
    的頭像 發(fā)表于 09-30 10:02 ?1298次閱讀

    java switch case值能為枚舉值嗎

    Java中的switch語句可以接受枚舉類型的值作為參數。在Java中,枚舉是一種特殊的數據類型,它定義了一個固定數量的命名常量。因此,可以將枚舉
    的頭像 發(fā)表于 11-30 14:41 ?4718次閱讀

    枚舉有多大?c語言枚舉end的作用是什么?

    枚舉有多大?c語言枚舉end的作用是什么? 枚舉在C語言中是一種常見的數據類型,用于定義一組相互關聯(lián)的常量或者變量。它通常用于表示一系列可能的取值,使得程序更加易讀和易維護。在C語言中
    的頭像 發(fā)表于 01-19 14:19 ?514次閱讀