2012-09-21 4 views
0

저는 최근 직장에서 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로 돌아갈 필요가 있는지 모르겠지만 여전히 수정하고 싶은 부분이 있습니다.

+2

'eeprom_read'의 이름을'eeprom_read_test'와 같은 다른 이름으로 변경하면 성공적으로 컴파일됩니까? 그렇다면, 뭔가 다른 것으로'eeprom_read'를'#define '하는 것일 수도 있습니다. 아마도 빈 문자열 일 것입니다. –

+0

예! 그거였다. eeprom_read 및 eeprom_write를 정의하는 일부 새 파일이 포함됩니다. 당신이 대답하면, 나는 그것을 받아 들일 것입니다. – kingcoyote

답변

1

일부 헤더 파일은 #define eeprom_read에 매크로 (빈 문자열 일 가능성이 있음)를 사용하고 있습니다. 다른 함수 이름 인 #undef eeprom_read을 사용하거나 더 이상 매크로가 헤더를 만들지 않게하려면 뭔가해야합니다.

관련 문제