У меня много кода на C++, изначально созданного для ПК. Я пытаюсь заставить его работать с Objective-C на Mac. С этой целью я создал инфраструктуру Objective-C для размещения кода C++ и добавил тонкую оболочку. Но я столкнулся с проблемой typedef в своем коде C++.
Когда я работал с C++ на ПК, я использовал переменную BOOL
, определенную в WinDef.h. Поэтому, когда я переместил все на Mac, я добавил в typedef int BOOL;
, чтобы убедиться, что переменная BOOL
все еще компилируется, как ожидалось.
Но когда я пытаюсь скомпилировать, я получаю сообщение об ошибке: "Conflicting declaration 'typedef int BOOL'
". Я предполагаю, что это связано с тем, что BOOL
является ключевым словом в Objective-C и поэтому уже определено. Я также не могу просто использовать Objective-C BOOL
, так как это беззнаковый char, а не int.
Пока я искал возможные решения, я нашел одно, которое упоминается отмена определения BOOL, но я не смог найти, как это сделать (и я не знаю, работает ли это на самом деле). Другой предлагает переименовать BOOL в файлах C++ к чему-то, что не является ключевым словом. Это предложение мне не подходит, потому что другие проекты полагаются на код C++. В идеале любые изменения, которые я делаю, должны оставаться в одном файле или, по крайней мере, не должны негативно влиять на код на компьютере с Windows.
Как я могу отменить определение BOOL в Objective-C для моих файлов C++ и использовать добавленное определение C++? Есть ли лучший способ справиться с этой проблемой?
Если это поможет, я использую: Xcode 3.2.5, 64-разрядную версию и Mac OS X 10.6.6.
Спасибо за любое руководство!
BOOL
в первую очередь? C++ уже имеет типbool
. - person Derek Ledbetter   schedule 13.08.2011