[英]XC8 compiler error “no identifier in declaration”
最近,我接管了工作中的一些C和固件職責,雖然遇到了一個基本問題,但我找不到答案。 我對C的經驗不是很豐富,但是我在使用高級語言方面已有多年的經驗。
該固件是為PIC18F4865編寫的,我無法使其正確編譯和編程。 它最初是使用HI-TECH PICC18編譯器在MPLAB IDE 8上編寫的,但后來我轉而使用MPLAB X IDE並遇到了問題。
首先,我使用的是相同的HI-TECH PICC18編譯器,它似乎編程成功,但是設備無法正確讀取。 然后,我切換到XC8編譯器,並開始在編譯過程中收到一條我無法解決的錯誤消息。
C:/_Sable/Firmware_C/lib\eeprom.h:10: error: no identifier in declaration
C:/_Sable/Firmware_C/lib\eeprom.h:10: error: ";" expected
eeprom.h文件是
#ifndef _EEPROM_H_
#define _EEPROM_H_
#define EE_ADDR(member) (offsetof(struct ee_map_s, (member)))
extern unsigned char eeprom_read(unsigned int); // this is line 10
extern void eeprom_write(unsigned int, unsigned char);
extern void ee_read(unsigned char, void *vp, unsigned char);
extern void ee_write(unsigned char, void *vp, unsigned char);
#endif
我在網上四處張望,發現此錯誤可能發生在先前包含的文件中,並且我檢查了該文件,並且一切正常。 我什至重新排列了包含順序,認為如果出現這種情況,錯誤消息將會更改,但是錯誤仍然抱怨這一行。
然后我以為函數聲明無效,因為沒有一個參數被命名,所以我將第10行更改為:
extern unsigned char eeprom_read(unsigned int addr)
這並沒有改變任何東西。 但是我確實有一種怪異的感覺,當我清理並重新構建時,它沒有重新編譯eeprom.h。 我不知道這種情況是否發生,或者如何迫使其重新編譯。
我不知道要解決此問題是否可以解決我遇到的固件問題,或者是否需要返回到MPLAB IDE 8,但這仍然是我要解決的問題。
某些標頭文件正在使用宏將#define eeprom_read
為其他內容,可能是空字符串。 如果您使用不同的函數名稱#undef eeprom_read
,或執行其他操作以使標頭不再創建該宏,則它應該起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.