博客專欄

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

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

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

今天在移植程序時,出現(xiàn)了一個錯誤
SYSTEM\SYS_Mcu\xxx.c(151): error:  #134: expected a field name
        CHIPCTL->CLKCTRL_b.PLLEN = 1;
12
這個錯誤的原因是字段名重復定義。
由此我去檢查程序,發(fā)現(xiàn)PLLEN這個變量被我定義了兩遍,第一遍在芯片頭文件中的結構體重,定義方法如下
   struct {
     __IO uint32_t PLLEN       : 1;           /*!< (@ 0x0000001C) PLLEN                               */
     XXXXXXXXXX                               /*其它定義*/
    } CLKCTRL_b;`
1234
第二遍在外部晶振定義時。
#define PLLEN (1<<28)   // pll
1
這兩種定義產生沖突因此出現(xiàn)了以上錯誤。
注意:
如果不引用結構體CLKCTRL_b中的PLLEN,而是單獨使用PLLEN這個變量,編譯器將直接按照對PLLEN的單獨定義來進行引用。如下的引用,編譯后沒有發(fā)生錯誤。
 CHIPCTL->CLKCTRL|=PLLEN;
1
按理來說結構體中的成員變量名可以與單獨變量名重復,但是為什么這時引用結構體成員變量名的時候會發(fā)生錯誤…可能跟keil有關,keil可能太傻了…如果有大神知道這是什么原因,請求告知~
————————————————

原文鏈接:https://blog.csdn.net/ssx1995/article/details/89152141

*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

DIY機械鍵盤相關社區(qū):機械鍵盤DIY


晶體管相關文章:晶體管工作原理


電流傳感器相關文章:電流傳感器原理
晶體管相關文章:晶體管原理


關鍵詞:

相關推薦

技術專區(qū)

關閉