Использование C ++ с Objective-C, как исправить «Конфликтное объявление 'typedef int BOOL'»?

У меня много кода на C ++, изначально созданного на ПК. Я пытаюсь заставить его работать с Objective-C на Mac. Для этого я создал платформу Objective-C для размещения кода C ++ и добавил тонкую оболочку. Но я столкнулся с проблемой typedef в моем коде C ++.

Когда я работал с C ++ на ПК, я использовал переменную BOOL , определенную в WinDef.h. Поэтому, когда я переместил все на Mac, я добавил в typedef int BOOL; , чтобы убедиться, что переменная BOOL по-прежнему компилируется, как ожидалось.

Но когда я пытаюсь скомпилировать, я получаю ошибка: « Конфликтующее объявление 'typedef int BOOL' ». Я предполагаю, что это потому, что BOOL является ключевым словом в Objective-C и уже определено. Я также не могу просто использовать Objective-C BOOL , поскольку это беззнаковый char, а не int.

Пока я искал возможные решения, я нашел одно , в котором упоминается определение BOOL , но я не мог найти, как это сделать (и не знаю, действительно ли это работает). Другой предлагает переименовать BOOL в файлах C ++ во что-то, что не является ключевым словом. Это предложение мне не подходит, потому что другие проекты полагаются на код C ++. В идеале любые внесенные мной изменения должны оставаться в одном файле или, по крайней мере, не должны отрицательно влиять на код на компьютере с Windows.

Как мне отменить определение Objective-C для BOOL для моих файлов C ++ и использовать добавленное мной определение C ++ ? Есть ли лучший способ справиться с этой проблемой?

Если это помогает, я использую: Xcode 3.2.5, 64-разрядную версию и Mac OS X 10.6.6

Спасибо за любые указания!

9
задан Lucy Bain 12 August 2011 в 22:30
поделиться