![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка Circular unit reference [D6, 95/98]
kilya © (2007-07-03 14:14:00)Здравствуйте. Вот такая проблема - Дельфи не дает двум модулям видеть друг друга, вроде с помощью директив это должно исправляться, сделал их даже в двух вариантах, но Дельфи все равно не пропускает.
-------------- Unit1 ----------------
{$IFNDEF flag1}
{$DEFINE flag1}
unit Map;
interface
uses Graphics, Windows {$IFNDEF flag2}, Unit2{$ENDIF};
...
{$ENDIF}
-------------- Unit2 ----------------
{$IFNDEF flag2}
{$DEFINE flag2}
unit Unit2;
interface
{$IFNDEF flag1}uses Unit1;{$ENDIF}
...
{$ENDIF}
Выдается ошибка [Fatal Error] Unit1.pas: Circular unit reference to 'Unit1'
Сергей М. (2007-07-03 14:26:00) [21]
> Дельфи не дает двум модулям видеть друг друга
Не вижу здесь никакого "друг друга".
Задумано тобой так - либо первый использует второй, либо второй использует первый, в зависимости от определенности flag1 или flag2.
Но flag1 не видим за пределами Unit2, а flag2 - соответственно за пределами Гтше1. Оттого и проблема.
Решается просто - убираются директивы DEFINE, а flag1 или flag2 указываются в conditional defines на уровне проекта в целом (см. свойства проекта)
т.е.
-------------- Unit1 ----------------
..
uses .. {$IFNDEF flag2}, Unit2{$ENDIF};
...
-------------- Unit2 ----------------
{$IFNDEF flag1}uses Unit1;{$ENDIF}
Dimaxx (2007-07-03 14:25:00) [22]А без DEFINE нормально работает? И зачем нужны они? Пусть себе ссылки на модули работают постоянно, а не только при наличии флагов.
Johnmen (2007-07-03 14:21:00) [23]Circular unit reference + F1