| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Как хитро обойти двусмысленность? |
| Автор: Homskiy 14.6.2008, 04:57 | ||
Значит, есть проект (не мой), который надо использовать. Он написан на С. Переписывать есесно впадел, учитывая, что надо из него лишь пару функций. Мой проект пишется на Builder 5, и в итогуе использует VCL и все прибамбасы C++. В не моем проекте есть следующие строчки в хидере:
на что компилятор матюкается:
Пробовал поотключать нафик все параметры в параметрах проекта + поставил флажек на использование С + назначил использование хидеров и либов из Turbo C, эта проблема исщезла (появились другие, но это к теме не относится). Но такой подход все-таки не подходит. Все прибамбасы в итоговом проекте должны быть и все должно будет компилироваться вместе, так сказать... Так вот, можно ли как-то запретить использование неймспейса System локально? Или как-то по другому обойти эту проблему? ЗЫ: Переписывание не моего проэтка - не подходит - слишком дохера переписывать + дополнительно в нем разбираться, а мне надо всего-то пару функций... Так что несоизмеримость затрат и результата... |
| Автор: bronislav 14.6.2008, 15:49 |
| А может легче отдельно реализовать эти самые пару функций? |
| Автор: Homskiy 14.6.2008, 16:09 |
| Нее. Там прога которая делает синтаксический анализ текста. А мне надо собсно функции которые делают этот анализ для предложений, возращают структуру и дают возможность обхода по ней... Самому это не наваять... |
| Автор: bronislav 14.6.2008, 20:09 |
| Как я понимаю компилятор ругается на пересечение неймспейсов. Вот так с ходу даже не знаю как это решить Можно попробывать указывать неймспейс явно. Используя System::Word, там где тебе надо использовать эти типы, а используемую по умолчанию директиву using namespace System - убрать. |
| Автор: Homskiy 15.6.2008, 03:03 |
| Вот как раз интересно где она убирается... хелпа молчит на эту тему.. Если подскажите где вообще в билдере находится управление директивами (я понимаю, что строчка в файле проекта, "pragma ..." - как бе отвечает за это дело, вроде) то буду очень признателен. |
| Автор: bronislav 15.6.2008, 09:12 |
| Дело в том, что я не знаю где это еще можно посмотреть в билдере, кроме как в начале файлов *.cpp *.h Это вам к специалистам по билдеру в соответсвующий раздел. p.s. директива pragma не управляет использованием неймспейсов |
| Автор: fish9370 15.6.2008, 12:51 | ||||
компилятор ругается на неоднозначность.. сделай так:
|
| Автор: xvr 16.6.2008, 11:11 | ||||||||
Добавь перед #include'ом с этим хидером
и соответственно
Отключтить using namespace System; не получится - он зашит в system.hpp, который напрямую включается в vcl.h Можно переставить #include <vcl.h> с твоим инклюдом, но тогда придется отключить предкомпилированные хидеры |
| Автор: Homskiy 16.6.2008, 16:04 |
| ну тут уже мне разрулили как это сделать http://forum.vingrad.ru/forum/topic-216732/unread-1/anchor-entry1550655/0.html с помощью адаптера |