簡體   English   中英

XC8編譯器錯誤“聲明中沒有標識符”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM