我从事一个包含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"
c
VS2008
VS
c