2011-10-13 2 views
3

Xcode 3.2.x에서 훌륭하게 작동하는 프로젝트가 있습니다.Xcode 4 : "오류 : 알 수없는 형식 이름 'BOOL'; 'BOOL'을 의미합니까?"

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

나는 바로 잘못된 BOOL 클릭 수와 엑스 코드는 애플의 정의로 이동합니다 : 컴파일 할 때 엑스 코드 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; 
} 

편집 : 잘못된 문자에 대한 이맥스와 HexFiend에서 소스보고 아무도 발견하지 후, 나는 이것이 애플의 부분에 버그의 일종 때문이라고 생각하는 경향이있어 (소스는 8 비트 깨끗합니다) .

+1

이 오류를 일으키는 코드 줄은 무엇입니까? 어떤 줄을 마우스 오른쪽 버튼으로 클릭 했습니까? – BoltClock

+0

@BoltClock - "그 줄에서 마우스 오른쪽 버튼을 클릭 했습니까?"- 물론 내가 그랬어 :) – jww

+0

objc.h를 포함시킨 후에도 여전히 오류가 발생 했습니까? 귀하의 질문은 그 시점에서 조금 모호합니다. – JeremyP

답변

2

그것은 애플 소프트웨어입니다.

애플은 내 3.2.6 프로젝트 설정을 무시하고 GCC 4.2보다는 LLVM 3.0 스위트를 사용하기로 결정했다. 이전 버전 (Xcode 3.2.6)에서는 GCC 경고 및 플래그를 광범위하게 사용하기 때문에 GCC를 사용하도록 프로젝트를 구체적으로 설정했습니다.

'Build Settings'-> 'C/C++/Objective 용으로 컴파일'을 GCC 4.2로 변경 한 후 작동했습니다.

Apple 레이더 10278815가보고되었으며 LLVM Bug 11126이보고되었습니다. Xcode 5 이전에 Apple에서 문제를 해결하기를 바랍니다.

3

야생 추측은 특수 문자로, XCode 3에서 특수 문자 인코딩을 사용하고 XCode 4에서 파일을 열면이 오류가 발생합니다.

이 답변이 정확한지 확인하려면 터미널에 파일 cat 또는 vim을 추천하고 일부 특정 문자가이 특정 줄에 있는지 확인하십시오.

이 작동하는지 확인하십시오.

+0

@apouche - 이맥스에서는 모든 문자가 8 비트 클린 것처럼 보입니다. – jww

+1

(이전 버전)은 BOM이있는 헤더를 발견했을 때 barfed되었습니다. 그것을 발견하는 데 몇 시간이 걸렸다. 그리고 나는 트렁크 구조를 통해 그것을 보내 냄으로써 문제를 찾아야했다. – justin

+1

@apouche - HexFiend에서 공격 라인의 모든 문자는 8 비트 (7 비트 ASCII)입니다. – jww