STM32 keil4 extern問題

最近一個項目,在stm32 keil中移植了別人的一些庫文件,編譯時出現如下錯誤提示
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol FLAG_comerr (referred from master.o).
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol adcval (referred from master.o).
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol nzval (referred from master.o).
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol receBuf (referred from master.o).
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol regstartaddr (referred from master.o).
.\OBJ\W5100_SPI.axf: Error: L6218E: Undefined symbol slaveraddr (referred from master.o).
原因是extern的使用問題,對於移植來說這毫無疑問。記得以前C51時想用extern 聲明變量以便在其他的文件調用,但都出現了這個問題,以前不懂,只能將一大片代碼直接在Main.c中實現。好吧,閒話休提。查了一些資料extern僅僅是聲明變量,不同定義,編譯器不會分配內存給它。也就是說要使用它除了在相應的頭文件聲明爲extern,還要在具體用到的.c文件中定義它比如頭文件中聲明extern u8 c;在用到的文件中:u8 c;。

 僅僅做個筆記,不對的,請看官批評指正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章