2012-06-01 25 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)' 

我以前见过冲突的类型错误,但从来没有比较它本身!这意味着什么?

这里是pmcvxcommon.h线127-144:

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

PMCDATA_STRUCT不是别处声明。这与VX_DMA_MEMORY_MAP相同。

任何想法?

+0

让我知道更多的信息,我可以提供。我将在周末结束,但如果我没有提供足够的信息,我可以在周一早上回答任何问题/评论。 – MattDavBen

+0

即使在放入#include保护后,仍然会收到同样的错误。 – MattDavBen

回答

2

尝试修改pmcvxcommon.h文件,如下所示:

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

我的猜测是:您在给定的编译单元中多次包含该文件。

+0

虽然它可能通过标题链获得了两次,但它似乎并不是。我会调查。谢谢! – MattDavBen

+0

刚刚测试过:我目前正在构建多个头文件的调用文件,其中两个需要pmcvxcommon.h。整个构建失败时未将其包含在这两个... – MattDavBen

+2

典型的解决方案是#define pmcvxcommon.h中的__PMCVXCOMMON__H__,然后执行#ifdef以仅#包含它,如果该符号尚未定义。 – Mordachai