2012-06-01 24 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