C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Интересный косяк с ZeosDBO, конфликт в ZPlainAdo.hpp и <iostream>
slackwar
Отправлено: 05.07.2006, 10:10


Ученик-кочегар

Группа: Участник
Сообщений: 4



если в приложении используются компоненты ZeosLib и требуется использовать потоки — подключая iostream и fstream, то при компиляции вылезает ошибка в ZPlainAdo.hpp (zeosdbo 6.1.5 stable)
на __property Word EOF = {read=_scw_Get_EOF};

[C++ Error] ZPlainAdo.hpp(517): E2040 Declaration terminated incorrectly

не нравится ему именно EOF !
если изменить на eof — всё замечательно компилируется...

может кто пояснит в чём тут грабли?

заранее спасибо

Отредактировано slackwar — 05/07/2006, 10:21
olegenty
Отправлено: 05.07.2006, 10:28


Ветеран

Группа: Модератор
Сообщений: 2412



EOF задефайнено выше, вот и всё. причём именно задефайнено. при компиляции вместо этого EOF подставляется его #DEFINE, и получаешь ты то, что видишь на экране.
slackwar
Отправлено: 06.07.2006, 15:47


Ученик-кочегар

Группа: Участник
Сообщений: 4



QUOTE (olegenty @ 05/07/2006, 10:28)
EOF задефайнено выше, вот и всё. причём именно задефайнено. при компиляции вместо этого EOF подставляется его #DEFINE, и получаешь ты то, что видишь на экране.

дело в том, что я не писал #define EOF...
в самом ZPlainAdo.hpp такого дефайна тоже нет

способ воспроизведения ошибки :
создать новый проект, на форму поместить компонент библиотеки
ZeosLib, например TZConnection
и в коде подключить #include iostream
в результате компиляции имеем указанную выше ситуацию,
которую решил указанным выше способом :-)

где там чего задефайнено? в iostream ?
olegenty
Отправлено: 07.07.2006, 07:07


Ветеран

Группа: Модератор
Сообщений: 2412



см. iostream и его инклуды — попадёшь на #DEFINE EOF
slackwar
Отправлено: 07.07.2006, 08:41


Ученик-кочегар

Группа: Участник
Сообщений: 4



ну естественно это где-то определено, но не переделывать же билдеровские библиотеки :-)
просто если чел (разработчики ZeosDbo) делали свою библиотеку — надо ж было проверять... :-)
там этих инклудов немеряно, я теперь должен перелопатить все, чтобы найти, где это там задефайнено в стандартных библиотеках, что их выкидыш потом конфликтует... блин, времени жаль потраченного

спасибо за ответ
olegenty
Отправлено: 07.07.2006, 08:51


Ветеран

Группа: Модератор
Сообщений: 2412



да почему потраченного? всю работу с iostream вынеси в отдельный модуль так, чтобы хедеры не пересекались.
** slackwar
Отправлено: 13.07.2006, 02:32


Не зарегистрирован







Ъ ЯБНИЯРБН ОЕПЕХЛЕМНБЮК — ЙНМТКХЙРНБЮРЭ ОЕПЕЯРЮКН, ОПЮБДЮ МЕ ГМЮЧ МЮ ЯЙНКЭЙН ЩРН ОПЮБХКЭМН, ГЮПЮАНРЮКН, ОНЯЛНРПЧ БШКЕГЕР ЦДЕ ХКХ МЕР.
olegenty
Отправлено: 13.07.2006, 03:14


Ветеран

Группа: Модератор
Сообщений: 2412



ничё не понял — кодировка левоватая...
slackwar
Отправлено: 13.07.2006, 07:58


Ученик-кочегар

Группа: Участник
Сообщений: 4



ааа.... из Linux писал, там кои8р
я к тому, что исправил: поставил eof в нижнем регистре и ругаться перестало и работает, вот только не уверен, вылезет это где-нибудь или нет

у какого-то китаёзы на сайте решение — вообще закоментарить эту строку, но я считаю это неправильно, свойство нужное

в общем пишу дальше и жду, вылезет или нет :-)

пасиб за советы

п.с. в прошлой проге так и делал — выносил в отдельный юнит операции с потоками, но тут структура немного другая...

Вернуться в Работа с базами данных в C++Builder