1

我从事一个包含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; 

我知道可能有一个像这里
这样的答案 但这是不对的:我从一个项目中
获取所有文件,并且在那里多次包含在其他 .h 文件中,它没有问题。 (项目在,这可能是没有问题的原因) 但是这是真的吗,有助于这一点并打破标准?c"DataStruct.h"
cVS2008
VSc

4

0 回答 0