Включать.h из файлов 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 стандарт?

0 ответов

Другие вопросы по тегам