2015-01-28 12 views
2

SDCC를 사용하고 이전 8051 프로그래밍을 사용하여이 컴파일 오류가 발생합니다. 1wire 검색 명령 작업을 수행하려고합니다. 나는 내 하드웨어/소프트웨어에 대한 수정 시작된 OneWire 라이브러리 내 손에있어 지금은이 오류 뒤에 붙어 :오류 98 : 'type'특성에 대한 x의 이전 정의와의 충돌

C:\sdcc\code>sdcc test3.c 
test3.c:164: error 98: conflict with previous definition of 'OW_search' for attribute 'type' 
from type 'int function (struct OW_info generic* fixed, unsigned-char fixed) fixed' 
to type 'int function (struct OW_info generic* fixed, unsigned-char fixed) fixed' 

오류에서 오는 라인은 다음과 같다. 이런 경우에

183:... 
184:int OW_search(struct OW_info *info) 
185:{ 
186:unsigned char *buffer; 
187:int id_bit_number; 
188 ... 

, 나는 그 오류를 컴파일 받고있는 이유 적절한 이유를 찾을 수 없습니다

int OW_search(struct OW_info *info); 

위 OW_info

struct OW_info 
{ 
unsigned char family; 
unsigned char serialNum[6]; 
unsigned char crc; 

}; 

내가 기능을 프로토 타이핑하고 선언 할 수는 없습니다. 나는 왜 그것이 거기에 올 것인가에 대한 암시를 원합니다. 감사.

그리고 링크 내 전체 코드 http://www.upload.ee/files/4489287/test3.txt.html

+0

'struct OW_info' 정의가 정확히 어디에 있습니까? 어딘가에서 5 번 라인에? –

+0

더 많은 것 101, 그것은 주요한 안쪽에이지 않는다. – s3v3ns

+0

오른쪽. 나는 OW의 이전 정의에서 인쇄 된 부분에 대해 크게 걱정하고 있습니다. 오타가 없는지 확인해 주시겠습니까? –

답변

1

내 기능을 프로토 타이핑 한 후 구조를 선언 때문에 나는 오류를 얻었다 다운로드합니다. @TripeHound 덕분에 함수를 프로토 타이핑하기 전에 구조체를 선언해야한다는 것을 알았습니다. 추가 연구 후에 다른 방법이 없다고 생각됩니다.

+0

아마도 정의되지 않았으며 선언되지 않았 음을 의미했을 것입니다. 그리고 구조체 선언을'typedef'하고 함수 앞에 typedef를두고 프로토 타입에 다음과 같이 사용하면됩니다. 'typedef struct OW_info OW_info;/* ...*/int OW_search (OW_info * info);/* ... 그리고 그 후에는 struct 정의와 함수 본문이옵니다. * /' 작동해야합니다. – Mints97

+0

참고 : 컴파일러는 함수 프로토 타입의 'struct'와 실제 struct가 서로 다른 범위에 속하기 때문에 두 개의 다른 구조체로 처리하므로 모든 문제가 발생합니다. 그것은 완전히 표준화 된 행동입니다. – Mints97

+0

그래, 어제 전에 구조체를 사용한 적이없는 사람으로, 전에 구조를 정의해야한다는 것을 몰랐기 때문에 진정한 정신을 잃은 사람이었습니다. 더욱 명확하게 해주셔서 감사드립니다. – s3v3ns