У меня много кода на 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
Спасибо за любые указания!