我处理的项目包含c
个源文件和c++
个文件
我使用的代码如下:
extern "C"
{
#include "init.h"
#include "ParameterGet.h"//ParameterGet.c exists
}
包含c文件。
但是我得到了一个.h
个c文件,其中没有.c
个文件。
它导致(我认为)许多错误:
multiple definition of `PeriodicFaultReport'
multiple definition of `FaultActiveEventReport'
multiple definition of `FaultInactiveEventReport'
multiple definition of `FaultLatchEventReport'
其中PeriodicFaultReport
,FaultActiveEventReport
,FaultInactiveEventReport
,FaultLatchEventReport
都在"DataStruct.h"
中声明,而且此文件中没有.c
个文件。
此外我注意到PeriodicFaultReport
,FaultActiveEventReport
,FaultInactiveEventReport
,FaultLatchEventReport
都是global variables
。
的 [重要]
内容相对"DataStruct.h"
c
:
struct OptionalString PeriodicFaultReport;
struct FaultActiveEventReportSet
{
BOOL Flag;
UINT8 Type ;
UINT32 Length;
struct Optional... Report...[2];
}FaultActiveEventReport;
struct FaultInactiveEventReportSet
{
BOOL Flag;
UINT8 Type ;
UINT32 Length ;
struct Optional... Faultt...;
}FaultInactiveEventReport;
struct FaultLatchEventReportSet
{
BOOL Flag;
UINT8 Type ;
UINT32 Length ;
struct OptionalInteger FaultID[2];
}FaultLatchEventReport;
我知道可能会有像here这样的答案
但这不对:
我从c
项目中获取了所有文件,其中"DataStruct.h"
多次包含在其他.h文件中,没有问题。
(c
项目位于VS2008
,这可能是没有问题的原因)
但这是真的,VS
有助于解决这个问题并打破c
标准吗?