const我平時(shí)沒(méi)咋用過(guò),最近在一份代碼中配置外設(shè)寄存器值的數(shù)組定義上看到用了這個(gè),因此進(jìn)行一下簡(jiǎn)單的入門(mén)學(xué)習(xí)。 在本文最后1點(diǎn)給出const在配置外設(shè)初始默認(rèn)寄存器的用法
- const定義的是變量,不是常量。 只是其值在初始化后就不允許再改變,即const變量為只讀變量
- 注意以下為以訛傳訛的錯(cuò)誤結(jié)論:定義數(shù)組時(shí)其長(zhǎng)度必須是常量,因此不允許使用const變量。
事實(shí)是不同的運(yùn)行環(huán)境結(jié)論是不一樣的:
(1)我試驗(yàn)在arm的cortex m0好的很,在cortex m0平臺(tái)上(stm32g031單片機(jī))用const變量來(lái)定義數(shù)組長(zhǎng)度一點(diǎn)問(wèn)題都沒(méi)有
(2)而在windows平臺(tái)上面試驗(yàn),const變量的確不能用來(lái)定義數(shù)組長(zhǎng)度,編譯階段就會(huì)報(bào)錯(cuò)
另外,雖然結(jié)論是錯(cuò)誤的,但因?yàn)樵谟械钠脚_(tái)上的確這個(gè)結(jié)論是成立的,因此為了代碼統(tǒng)一規(guī)范,最好就遵循不要用const變量來(lái)定義數(shù)組長(zhǎng)度的規(guī)則
3.定義const變量時(shí),const和具體數(shù)據(jù)類(lèi)型位置可以互換,沒(méi)有區(qū)別,但一般是把const放前面:
(1)一般的定義方法
const int a = 10;
(2)const和int位置互換,和上面的定義含義是一樣的
int const a = 10;
4.const 和 define 的區(qū)別
(1)const定義的是變量,define定義的是常量
(2)#define在預(yù)編譯階段就展開(kāi)了,不占用內(nèi)存,機(jī)器只會(huì)給變量分配內(nèi)存,而const定義的是變量,是占用內(nèi)存的
5.定義一個(gè)const數(shù)組的方法,用來(lái)給外設(shè)做初始默認(rèn)寄存器配置,該數(shù)據(jù)里面元素的數(shù)據(jù)類(lèi)型是結(jié)構(gòu)體
#define SOMEDEVICE_REG_CONFIG_NUM_REGS 16
typedef struct
{
unsigned char address; /* 8-bit register address */
unsigned char value; /* 8-bit register data */
} somedevice_register_t;
somedevice_register_t const somedevice_registers[SOMEDEVICE_REG_CONFIG_NUM_REGS] =
{
{ 0x00, 0x11 },
{ 0x01, 0x36 },
{ 0x02, 0x75 },
{ 0x03, 0x27 },
{ 0x04, 0x38 },
{ 0x05, 0x1F },
{ 0x06, 0x25 },
{ 0x07, 0x88 },
{ 0x08, 0x46 },
{ 0x09, 0x29 },
{ 0x0a, 0x03 },
{ 0x0b, 0x01 },
{ 0x0c, 0x40 },
{ 0x0d, 0x11 },
{ 0x0e, 0x31 },
{ 0x0f, 0x45 },
};
-
寄存器
+關(guān)注
關(guān)注
31文章
5425瀏覽量
123533 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140557 -
變量
+關(guān)注
關(guān)注
0文章
614瀏覽量
28846 -
數(shù)組
+關(guān)注
關(guān)注
1文章
419瀏覽量
26397 -
CONST
+關(guān)注
關(guān)注
0文章
45瀏覽量
8411
發(fā)布評(píng)論請(qǐng)先 登錄
C語(yǔ)言volatile關(guān)鍵字詳解 精選資料分享
嵌入式程序員常見(jiàn)的const、static、volatile關(guān)鍵字
標(biāo)準(zhǔn)C語(yǔ)言總共有32個(gè)關(guān)鍵字
C++中mutable關(guān)鍵字詳解與實(shí)戰(zhàn)
C++中的const關(guān)鍵字介紹
淺談C++的mutable關(guān)鍵字
const關(guān)鍵字應(yīng)用總結(jié)
C語(yǔ)言32個(gè)關(guān)鍵字可以分為這幾類(lèi)

淺析C語(yǔ)言中的regiseter關(guān)鍵字

快速掌握C語(yǔ)言關(guān)鍵字

評(píng)論