枚舉類型的使用分兩步:
1.定義一個(gè)特定的枚舉類型
2.定義該枚舉類型的變量并使用
以下學(xué)習(xí)內(nèi)容均已經(jīng)過實(shí)測(cè):
1.定義枚舉類型的值只能是整型常量,正數(shù)、負(fù)數(shù)和零都可以,但不可以是浮點(diǎn)數(shù)
2.對(duì)枚舉類型做sizeof試驗(yàn):
(1)我在stm32單片機(jī)上試驗(yàn),也即ARM編譯器上,枚舉類型的存儲(chǔ)大小按定義的值里面需要占內(nèi)存最大的給,即1、2、4、8都有可能,遵循夠用原則
(2)而在windows上試驗(yàn),即GNU GCC編譯器上,枚舉類型的存儲(chǔ)大小固定為4(但當(dāng)定義中有超過4個(gè)字節(jié)大小的值時(shí),存儲(chǔ)大小變?yōu)?)
(3)無論哪個(gè)編譯器,枚舉類型的值最長只能為8個(gè)字節(jié),更長的大小不接受
試驗(yàn)參考代碼,可以自己改定義中的值大小去測(cè)結(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)錯(cuò)誤的修飾代碼,在類型的定義前加extern將起不到任何作用,因?yàn)閑xtern是用來修飾變量的。以下代碼不會(huì)報(bào)錯(cuò),但會(huì)警告,extern出現(xiàn)在這里起不到任何作用
extern enum DAY
{
MON = 0, TUE, WED, THU, FRI, SAT, SUN
};
(2)正確的修飾代碼,在枚舉變量定義前加extern
extern enum DAY day;
-
ARM芯片
+關(guān)注
關(guān)注
1文章
127瀏覽量
21795 -
GNU
+關(guān)注
關(guān)注
0文章
143瀏覽量
17668 -
STM32單片機(jī)
+關(guān)注
關(guān)注
59文章
549瀏覽量
59240 -
gcc編譯器
+關(guān)注
關(guān)注
0文章
78瀏覽量
3566
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
使用枚舉類型表示狀態(tài)機(jī)進(jìn)入死循環(huán)

C語言必備知識(shí)枚舉體
labview中的基本函數(shù)發(fā)生器應(yīng)用時(shí)信號(hào)類型接線枚舉有誤
labview小白求教枚舉類型控件
詳細(xì)講解c語言enum枚舉類型
枚舉類型最后面增加項(xiàng)報(bào)錯(cuò)
深入理解java枚舉類型enum用法
枚舉是C語言中的一種基本數(shù)據(jù)類型

評(píng)論