Включение файлов .h of c приводит к странному «множественному определению» ошибки?

Я работаю над проектом, который содержит как c исходные файлы и c++ из них.
Я использую код как:

extern "C"{
#include "init.h"#include "ParameterGet.h"//ParameterGet.c exists
}

включить c файлами.

Но я получил .h файлы с которой нет .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;

Я знаю, что может быть ответ, как Вот
Но это не правильно
Я получаю все файлы из c проект, и там, "DataStruct.h" включены несколько раз в другие файлы .h, и это не проблема.
(The c проект находится в VS2008что может быть причиной без проблем)
Но правда ли это, VS помогает этому и сломать c стандарт?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]