質問

私はC ++ライブラリで提供される機能を使用してのObjective-C / C ++アプリケーションを持っています。

C ++のクラスの一つは、このような列挙型が含まれます:

class TheClass
{
public:
[...]

enum TheEnum
{
    YES,
    NO,
};

[...]
};

(使用して、そのmatters- -ifの#import)のObjective-C / C ++ソース・ファイル(* .mm)中の上記のクラス宣言を持つヘッダファイルを含むプリプロセッサにより「YES」置き換えるので、コンパイルが失敗になります用語 "(BOOL)1"(同様に "NO" による "(BOOL)0")。

列挙型の値の名前を変更することなく、これを修正する方法はありますか?

役に立ちましたか?

解決

YESとNO定義済みの定数はでをさobjc.hヘッダ内で宣言目的-C、

あなたは「YES」と「NO」のマクロのを展開するプリプロセッサを防ぐことができるはずです。これは、ローカル #undeffing にそれらによって行うことができます。

あなたは識別子としての言語のキーワードを使用している場合は、

しかし、技術的に、あなたはトラブルを期待することができます。あなたはあなたでしょう、MAX_PATHと呼ばれるメンバーを含むクラスを作成していないのだろうか?

他のヒント

<ストライキ>は#importは問題ありません - C ++ヘッダのObjective-C ++のソースファイルには#includeに含まれるべきです。選択は指令(#include#import)が使用されるプリプロセッサを決定含まれていることを、100%わからないけれども、私は、と思います。

<ストライキ>

<ストライキ>デフォルトでは、列挙型のメンバーは0から始まる整数に関連付けられているので、あなたはまた、列挙型の定数の宣言を逆転させることができます。

コメントパー、私は間違っています。あなたが列挙型を書き換える必要がありますように見えます。申し訳ありません:(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top