我最近在工作中接管了一些C和固件職責,並且似乎是一個基本問題,但找不到答案。我對C並不是很有經驗,但是我有多年的高級語言經驗。XC8編譯器錯誤「聲明中沒有標識符」
固件是爲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,但仍然是我想解決的問題。
如果您將'eeprom_read'重命名爲其他內容,例如'eeprom_read_test',它會成功編譯嗎?如果是這樣的話,那麼東西可能是'#define' eeprom_read'到其他東西,可能是空字符串。 –
是的!就是這樣。正在包含一些定義eeprom_read和eeprom_write的新文件。如果你做出回答,我一定會接受它。 – kingcoyote