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'

ここPeriodicFaultReportFaultActiveEventReport、、、、FaultInactiveEventReportFaultLatchEventReportすべて宣言されて"DataStruct.h"おり、このファイルにはファイルがありません.c

PeriodicFaultReportその上、FaultActiveEventReportFaultInactiveEventReportFaultLatchEventReportがすべてであることに気付きました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のような答えがあるかもしれませんが、
正しくありません。プロジェクト
からすべてのファイルを取得すると、他の .h ファイルに複数回含まれていますが、問題はありません。 (プロジェクトは にあり、これが問題のない理由かもしれません) しかし、これは本当ですか、これに役立ち、標準を破りますか?c"DataStruct.h"
cVS2008
VSc

4

0 に答える 0