KEIL 5編譯出現 “expected a field name”錯誤的原因
今天在移植程序時,出現了一個錯誤
SYSTEM\SYS_Mcu\xxx.c(151): error: #134: expected a field name
CHIPCTL->CLKCTRL_b.PLLEN = 1;
12
這個錯誤的原因是字段名重復定義。
由此我去檢查程序,發(fā)現PLLEN這個變量被我定義了兩遍,第一遍在芯片頭文件中的結構體重,定義方法如下
struct {
__IO uint32_t PLLEN : 1; /*!< (@ 0x0000001C) PLLEN */
XXXXXXXXXX /*其它定義*/
} CLKCTRL_b;`
1234
第二遍在外部晶振定義時。
#define PLLEN (1<<28) // pll
1
這兩種定義產生沖突因此出現了以上錯誤。
注意:
如果不引用結構體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
晶體管相關文章:晶體管工作原理
電流傳感器相關文章:電流傳感器原理 晶體管相關文章:晶體管原理