Ошибка переопределения Typedef при попытке построить проект XCode для выпуска - PullRequest
4 голосов
/ 03 апреля 2012

Я могу построить свой проект в Xcode (4.2) для отладки без проблем, но когда я хочу собрать его для выпуска (сборка для архивирования), я получаю ошибку: «Переопределение Typedef с различными типами (unsigned int vs unsigned long)».

Проблемный код:

#ifdef _LZMA_UINT32_IS_ULONG 
typedef long Int32; 
typedef unsigned long UInt32; 
#else 
typedef int Int32; 
typedef unsigned int UInt32; <--error on this line
#endif

Весь файл можно просмотреть по адресу: http://read.pudn.com/downloads166/sourcecode/zip/758136/C/Types.h__.htm

Предыдущее определение в MacTypes.h из инфраструктуры CoreServices.

У меня те же макросы препроцессора для отладки и выпуска, и я использую компилятор LLVM от Apple 3.0.Та же ошибка возникает, когда я пытаюсь построить проект для анализа.

Есть идеи, почему это происходит?

1 Ответ

7 голосов
/ 03 апреля 2012

В случае, если вы получаете сообщение об ошибке (при компиляции 32-битной версии), у вас уже есть эквивалент

typedef unsigned int UInt32; <--error on this line

(отсюда и ошибка), поэтому вы можете удалить ошибочную строку.

Очевидно, что не весь ваш источник включает / импортирует MacTypes.h, поэтому, чтобы иметь его в обоих направлениях, окружите оскорбительную строку #ifdefs следующим образом:

#ifndef __MACTYPES__
typedef unsigned int UInt32;
#endif

К сожалению, это не идеально;Вы должны быть уверены, что если MacTypes.h включен, это произойдет до этого.Один из способов убедиться в том, что ваша система #imports перед вашим локальным # импортом.

...