2012-06-01 2 views
0

VxWorks 이미지를 작성 중이며 하나의 특정 .cpp 파일에 계속 연결됩니다. 여기에 오류가 있습니다 :충돌하는 형식 동일한 파일 내의 오류?

C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:144: conflicting types for `typedef struct PMCDATA_STRUCT PMCDATA_STRUCT' 
C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:144: previous declaration as `typedef struct PMCDATA_STRUCT PMCDATA_STRUCT' 
C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:205: conflicting types for `typedef struct VX_DMA_MEMORY_MAP VX_DMA_MEMORY_MAP' 
C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:205: previous declaration as `typedef struct VX_DMA_MEMORY_MAP VX_DMA_MEMORY_MAP' 
C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:230: new declaration `struct PMCDATA_STRUCT * GetPmc(int)' 
C:\\Tornado2.2\\target\\src\\pmccommon\\pmcvxcommon.h:230: ambiguates old declaration `struct PMCDATA_STRUCT * GetPmc(int)' 

이전에 충돌하는 유형 오류가 있지만 그 자체가 비교 대상이 아닙니다. 이것은 무엇을 의미 할 수 있습니까?

typedef struct 
{ 
    >>lines 129-143 
}PMCDATA_STRUCT; 

PMCDATA_STRUCT 다른 곳에서 선언되지 않은 : 여기

는 pmcvxcommon.h 라인 127-144입니다. 이것은 VX_DMA_MEMORY_MAP에 대해서도 동일합니다.

아이디어가 있으십니까?

+0

는 제가 제공 할 수있는 추가 정보가 무엇인지 알려주십시오. 나는 주말 동안 떠날 것이다. 그러나 내가 충분한 정보를 제공하지 않으면 나는 월요일에 어떤 질문/의견이라도 대답 할 수있다. – MattDavBen

+0

#include guard를 넣은 후에도 여전히 동일한 오류가 발생합니다. – MattDavBen

답변

2

시도 :

#ifndef PMCVXCOMMON_H 
#define PMCVXCOMMON_H 
... original content of file ... 
#endif 
1

내 생각 엔 : 주어진 컴파일 단위 내에서 파일을 여러 번 포함하고 있습니다. 다음과 같이 pmcvxcommon.h 파일을 수정

+0

헤더 체인을 통해 두 번 입수했을 수도 있지만 나타나지 않습니다. 조사 할게. 감사! – MattDavBen

+0

방금 ​​테스트 : 현재 빌드중인 파일은 여러 헤더 파일을 호출하며 그 중 두 개는 pmcvxcommon.h가 필요합니다. 이들 모두에 포함하지 않고 전체 빌드가 실패합니다 ... – MattDavBen

+2

일반적인 해결책은 pmcvxcommon.h에서 #define __PMCVXCOMMON__H__을 수행 한 다음 해당 심볼이 아직 정의되지 않은 경우 #include 만 #ifdef합니다. – Mordachai