2011-10-13 17 views
3

私はXcode 3.2.xで素晴らしい仕事をしています。Xcode 4: "エラー:不明な型名 'BOOL'; 'BOOL'を意味しましたか?"

"error: unknown type name 'BOOL'; did you mean 'BOOL'?" 

私は右の問題BOOLをクリックすると、Xcodeは、Appleの定義にジャンプします:コンパイル時にXcodeの4.2の下で、私は次のエラーを取得しています。 BOOL<objc/objc.h>で定義されているので、ソースファイルに含めました(実際にはUIKit.hとFoundation.hでプリコンパイルされたヘッダーを使用していますが)。まだ喜んではいません - コンパイルエラーが続く

Xcode 4の回避策のアイデアは感謝します。 Googleは0ヒットを提供している。

EDIT:曖昧さを除去するための違反コードを追加しました。

// AppConstants.h 
typedef enum { ThreadPriorityLow = NSOperationQueuePriorityLow, ThreadPriorityNormal = NSOperationQueuePriorityNormal, 
    ThreadPriorityHigh = NSOperationQueuePriorityHigh, ThreadPriorityDefault = ThreadPriorityNormal } ThreadPriority; 

static inline BOOL IsValidThreadPriority(ThreadPriority priority) 
{ 
    return priority == ThreadPriorityLow || priority == ThreadPriorityNormal || priority == ThreadPriorityHigh; 
} 

EDIT:不正な文字のためのEmacsとHexFiend下のソースを見て、何を見つけていない後、私はこれがAppleの部分にバグのいくつかの種類が原因であると考えているに傾いている(ソースは8ビットクリーンです) 。

+1

このエラーを引き起こすコード行は?その行の中であなたはどのBOOLを右クリックしましたか? – BoltClock

+0

@BoltClock - "あなたはその行で右クリックしましたか?" - もちろん私はでした:) – jww

+0

objc.hを含めた後もまだエラーが出ましたか?あなたの質問は、その点で少し曖昧です。 – JeremyP

答えて

2

Appleソフトウェアが壊れています。

Appleは自分の3.2.6プロジェクトの設定を無視し、GCC 4.2ではなくLLVM 3.0スイートを使用することに決めました。以前は(Xcode 3.2.6の下で)、私はGCCの警告とフラグを広範囲に使用しているため、GCCを使用するようにプロジェクトを具体的に設定しました。

「ビルド設定」 - >「C/C++/Objective用にコンパイル」をGCC 4.2に変更した後、それは機能しました。

Appleレーダー10278815が報告され、LLVM Bug 11126が報告されています。うまくいけば、アップルはXcode 5の前にそれを修正するだろう。

3

野生の推測は、あなたの行に現れる特殊文字です.XCode 3で特殊文字エンコーディングを使用していて、XCode 4でファイルを開くとこのエラーが発生します。

この回答が正しいかどうかを確認するには、catまたはvim端末のファイルをお勧めします。この特定の行にいくつかの野生の文字があるかどうかを確認してください。

+0

@apouche - emacsの下では、すべての文字が8ビットであるように見えます。 – jww

+1

(旧バージョン)は、BOMを含むヘッダーが検出されたときに変更されました。それを見つけるのに何時間もかかりました。私はトランクのclangを使ってそれを送って問題を突き止めなければなりませんでした。 – justin

+1

@apouche - HexFiendでは、問題のある行のすべての文字が8ビットクリーン(7ビットASCII)です。 – jww

関連する問題