[Linker Warning] Public symbol - что за прикол такой?
[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
Цитата: 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
[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рр
PS: но такого клюка не вызывало раньше... объявлял похожие - и ни одного warning не было, может быть это из-за того что я написал в другой теме? ([Linker Error] Unresolved external)
а лучше такие переменные объявлять статическими, тогда они точно не будут вылазить из видимости модуля.
что значит статическими? static int i ?
да, это и значит.
просто был такой интересный момент - я в Unit2 переименовал переменную - навал ее из isEdit в isEdit2, и все равно такая же ошибка :) мол, в двух модулях используется название переменной isEdit2... Фокус, млин :)
Цитата: __AleXX__
да, это и значит.
а про static надо будет поподробнее почитать как нибудь... вдруг это очень важная вещь...
PS: просто я всегда без static обходился - и все ОК было...