Добавить весь проект в пространство имен в XE2 - PullRequest
0 голосов
/ 02 марта 2012

У нас есть C ++ Builder приложение, которое прошло через многие версии Embarcadero RAD Studio .Теперь я пытался заставить его скомпилироваться в XE2 и столкнулся с проблемой, когда класс под названием TGroup стал неоднозначным с классом TGroup Winsock.

К своему гневу я обнаружил, что первоначальные разработчики системы не использовали никаких пространств имен, которые бы решили эту проблему.Для начала я решил добавить весь код проекта в одно пространство имен.Но довольно скоро до меня дошло, что мне придется просмотреть около 1400 .h и .cpp файлов .

Пожалуйста, ради любви к Богу ... Есть ли хороший инструмент для быстрой инкапсуляции всего проекта в пространстве имен?

Большинство файлов немного отличаются по разметке.Некоторые имеют определения после включений, а некоторые нет и т. Д. Но просто вставить объявление пространства имен после включений, вероятно, должно нормально работать, а затем закрыть его непосредственно перед последним # endif , который является включениемохранник # определить .

1 Ответ

0 голосов
/ 04 марта 2012

Проверьте, не содержат ли поврежденные заголовочные файлы пространства имен. Все заголовочные файлы на основе VCL ДОЛЖНЫ использовать пространства имен, но они также имеют операторы using namespace внизу, чтобы по умолчанию выгружать все в глобальное пространство имен. Большинство версий имеют специальные значения #define, которые можно отключить для этого поведения.

...