Xcode 4: «ошибка: неизвестное имя типа« BOOL »; вы имели в виду« BOOL »?» - PullRequest
3 голосов
/ 13 октября 2011

У меня есть проект, который отлично работал под Xcode 3.2.x. Под Xcode 4.2 я получаю следующую ошибку при компиляции:

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

Я могу щелкнуть правой кнопкой мыши на оскорбительном BOOL, и Xcode перейдет к определению Apple. BOOL определено в <objc/objc.h>, поэтому я включил его в свой исходный файл (несмотря на то, что я использую предварительно скомпилированные заголовки с UIKit.h и Foundation.h). Все еще нет радости - ошибка компиляции сохраняется.

Буду признателен за любые идеи для обхода Xcode 4. Google предлагает 0 хитов.

РЕДАКТИРОВАТЬ: добавлен нарушающий код для устранения любой двусмысленности.

// 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;
}

РЕДАКТИРОВАТЬ: после просмотра источника в Emacs и HexFiend на наличие недопустимых символов и не найдя ни одного (источник чист 8-битный), я склонен полагать, что это связано с некоторой ошибкой со стороны Apple.

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Дикая догадка - это специальный символ, который появился в вашей строке, возможно, вы использовали какую-то специальную кодировку символов в XCode 3, и открытие файла в XCode 4 вызывает эту ошибку.

Чтобы проверить, верен ли этот ответ, я бы порекомендовал вам cat или vim файл в вашем терминале и посмотреть, есть ли в этой конкретной строке некоторые дикие символы.

Дайте нам знать, если это работает

2 голосов
/ 13 октября 2011

Было сломано программное обеспечение Apple.

Apple проигнорировала мои настройки проектов 3.2.6 и решила использовать пакет LLVM 3.0 вместо GCC 4.2. Ранее (под Xcode 3.2.6) я специально настроил проект на использование GCC из-за моего широкого использования предупреждений и флагов GCC.

После того, как я изменил «Настройки сборки» -> «Компилировать для C / C ++ / Objective» обратно в GCC 4.2, все заработало.

Apple Radar 10278815 сообщает, и LLVM Bug 11126 сообщает. Надеюсь, Apple исправит это до Xcode 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...