Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Linker Warning] Public symbol - что за прикол такой?

490
17 сентября 2007 года
frid-karatel
357 / / 15.09.2007
Выдаются два однотипных предупреждения:
[Linker Warning] Public symbol '_isNew' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT2.OBJ
[Linker Warning] Public symbol '_isEdit' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT2.OBJ


Соль в чем - в двух модулях - Unit1 и Unit2 имеются переменные с одинаковыми названиями:
bool isNew, isEdit;

Так вот, как с этим бороться и почему в Linker Warning указывается не isNew, а _isNew
246
17 сентября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: frid-karatel
Выдаются два однотипных предупреждения:
[Linker Warning] Public symbol '_isNew' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT2.OBJ
[Linker Warning] Public symbol '_isEdit' defined in both module C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT1.OBJ and C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\RUSCHINATEL\UNIT2.OBJ


Соль в чем - в двух модулях - Unit1 и Unit2 имеются переменные с одинаковыми названиями:
bool isNew, isEdit;

Так вот, как с этим бороться и почему в Linker Warning указывается не isNew, а _isNew


а срр всегда (почти) имена коверкает,
вынести переменные в один модуль, а в другие подставлять через extern bool is Edit; в hрр

490
17 сентября 2007 года
frid-karatel
357 / / 15.09.2007
спасибо, понял... но лучше не выносить в один модуль, а просто изменить имена переменных... например isEdit2, isNew2... через extern немного неправильно будет - эти же переменные относятся к юнитам по-отдельности, т.е. связи между ними не должно быть...

PS: но такого клюка не вызывало раньше... объявлял похожие - и ни одного warning не было, может быть это из-за того что я написал в другой теме? ([Linker Error] Unresolved external)
12K
17 сентября 2007 года
__AleXX__
133 / / 02.04.2007
а лучше такие переменные объявлять статическими, тогда они точно не будут вылазить из видимости модуля.
490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
что значит статическими? static int i ?
12K
18 сентября 2007 года
__AleXX__
133 / / 02.04.2007
да, это и значит.
490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
просто был такой интересный момент - я в Unit2 переименовал переменную - навал ее из isEdit в isEdit2, и все равно такая же ошибка :) мол, в двух модулях используется название переменной isEdit2... Фокус, млин :)
490
18 сентября 2007 года
frid-karatel
357 / / 15.09.2007
Цитата: __AleXX__
да, это и значит.



а про static надо будет поподробнее почитать как нибудь... вдруг это очень важная вещь...

PS: просто я всегда без static обходился - и все ОК было...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог