私は継承したコードに問題があります。このコードはCのみの環境でうまく構築されていましたが、今はこのコードを呼び出すためにC++を使用する必要があります。ヘッダproblem.h
は含まれていますboolがmixed C/C++で定義されているか確認してください
#ifndef _BOOL
typedef unsigned char bool;
static const bool False = 0;
static const bool True = 1;
#endif
struct astruct
{
bool myvar;
/* and a bunch more */
}
を私はC++のコードとしてコンパイルするとき、私は私が理解していないextern "C" { ... }
で#include "problem.h"
を(ラップ場合がある必要があるので、私は、同じエラーを取得しerror C2632: 'char' followed by 'bool' is illegal
を取得しますCとしてコンパイルするには、noキーワードbool
ならない)
私は#ifndef _BOOL
から#endif
にブロックを除去し、C++としてコンパイルしてみました、と私はエラーを取得:?
error C2061: C requires that a struct or union has at least one member
error C2061: syntax error: identifier 'bool'
私はC++コンパイラはbool
の再定義について不平を言っているか理解していない、まだ私は再定義を削除し、ちょうど変数を定義するbool
を使用しようとすると、それは何も見つかりません。
ご協力いただきまして誠にありがとうございます。
「extern」C「 'は「Cとしてコンパイル」を意味しないことに注意してください。これは「Cリンケージでコンパイルする」ことを意味します。内部のコードはまだC++であり、Cとしてリンクできないものは定義できません。 –