KEIL 5編譯出現(xiàn) “expected a field name”錯(cuò)誤的原因
今天在移植程序時(shí),出現(xiàn)了一個(gè)錯(cuò)誤
SYSTEM\SYS_Mcu\xxx.c(151): error: #134: expected a field name
CHIPCTL->CLKCTRL_b.PLLEN = 1;
12
這個(gè)錯(cuò)誤的原因是字段名重復(fù)定義。
由此我去檢查程序,發(fā)現(xiàn)PLLEN這個(gè)變量被我定義了兩遍,第一遍在芯片頭文件中的結(jié)構(gòu)體重,定義方法如下
struct {
__IO uint32_t PLLEN : 1; /*!< (@ 0x0000001C) PLLEN */
XXXXXXXXXX /*其它定義*/
} CLKCTRL_b;`
1234
第二遍在外部晶振定義時(shí)。
#define PLLEN (1<<28) // pll
1
這兩種定義產(chǎn)生沖突因此出現(xiàn)了以上錯(cuò)誤。
注意:
如果不引用結(jié)構(gòu)體CLKCTRL_b中的PLLEN,而是單獨(dú)使用PLLEN這個(gè)變量,編譯器將直接按照對PLLEN的單獨(dú)定義來進(jìn)行引用。如下的引用,編譯后沒有發(fā)生錯(cuò)誤。
CHIPCTL->CLKCTRL|=PLLEN;
1
按理來說結(jié)構(gòu)體中的成員變量名可以與單獨(dú)變量名重復(fù),但是為什么這時(shí)引用結(jié)構(gòu)體成員變量名的時(shí)候會(huì)發(fā)生錯(cuò)誤…可能跟keil有關(guān),keil可能太傻了…如果有大神知道這是什么原因,請求告知~
————————————————
原文鏈接:https://blog.csdn.net/ssx1995/article/details/89152141
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
晶體管相關(guān)文章:晶體管工作原理
電流傳感器相關(guān)文章:電流傳感器原理 晶體管相關(guān)文章:晶體管原理