私は元々はPC上に構築されたC++で多くのコードを持っています。私はObjective-CをMac上で動作させようとしています。そのために、C++コードを格納するObjective-Cフレームワークを作成し、薄いラッパーを追加しました。しかし、私はC++コードでtypedefの問題に遭遇しています。Objective-CでC++を使用すると、「競合する宣言 'typedef int BOOL'」をどのように修正できますか?
私はWinDef.hで定義されたBOOL
変数を使用するPC上でC++で働いていました。だから、私がMac上ですべてを動かすと、typedef int BOOL;
に追加して、BOOL
変数が期待どおりにコンパイルされることを確認しました。
しかし、私はエラーを取得コンパイルしよう:「Conflicting declaration 'typedef int BOOL'
を」。これは、BOOL
がObjective-Cのキーワードであり、すでに定義されているためです。 Objective-C BOOL
は、intではなく符号なしのcharであるため、使用することはできません。
私は定義取り消しのBOOLに言及し、私はそれを行う方法を見つけることができませんでした(またそれが実際に動作するか、私は知っています)oneを発見した可能な解決策を探していましたが。 Anotherは、の名前をBOOLのC++ファイルにキーワードではないものに変更します。他のプロジェクトがC++コードに依存しているので、この提案は私の選択肢ではありません。理想的には、私が行った変更は1つのファイルにとどまるか、少なくともWindowsマシン上のコードに悪影響を与えるべきではありません。
どのように私はC++のファイルのためのBOOLのObjective-Cの定義を未定義とC++の定義を使用することができます私が追加?この問題に対処するより良い方法はありますか?
ケースでは、私が使用しているのに役立ちます:Xcodeの3.2.5、64ビットおよびMac OS Xを任意の指導のための10.6.6
ありがとう!
は、なぜあなたは最初の場所で 'BOOL'を使用しましたか? C++にはすでに 'bool'型があります。 –
Windowsでは多くのAPIがWindowsによって定義されたBOOL型を使用するため、実際はintです。 BOOLと互換性がありません。特に、このAPIに渡す必要がある構造体の一部ではありません(Windowsではboolはバイトサイズで、BOOLは4バイトです)。 –