博客專欄

EEPW首頁 > 博客 > KEIL 5編譯出現(xiàn) “expected a field name”錯(cuò)誤的原因

KEIL 5編譯出現(xiàn) “expected a field name”錯(cuò)誤的原因

發(fā)布人:電子禪石 時(shí)間:2019-12-26 來源:工程師 發(fā)布文章

今天在移植程序時(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)文章:晶體管原理


關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉