Перекрестные ссылки
[Linker Warning] Public symbol '_prog' defined in both module <модуль>.OBJ and <модуль>.OBJ
Если я не ошибаюсь, паттерн даже есть на эту тему.
Они, конечно, не сильно мешают... но их уже больше 400!:x
Цитата:
Originally posted by Mark
Подскажите как избавиться от перекрёстных ссылок. Я имею ввиду
[Linker Warning] Public symbol '_prog' defined in both module <модуль>.OBJ and <модуль>.OBJ
Если я не ошибаюсь, паттерн даже есть на эту тему.
Они, конечно, не сильно мешают... но их уже больше 400!:x
Подскажите как избавиться от перекрёстных ссылок. Я имею ввиду
[Linker Warning] Public symbol '_prog' defined in both module <модуль>.OBJ and <модуль>.OBJ
Если я не ошибаюсь, паттерн даже есть на эту тему.
Они, конечно, не сильно мешают... но их уже больше 400!:x
если правильно понял то проблема решается следующим образом:
при объявлении в хидере класса MyClass пишу следующее:
#ifndef __MyClass__
#define __MyClass__
class MyClass
{
//
};
#endif
Это меня смутили критикой в адрес хаотично подключаемых хидеров. Я думал, проблема в общей логической схеме подключения.
Спасибо за участие!
>Я имею ввиду
>[Linker Warning] Public symbol '_prog'
>defined in both module <модуль>.OBJ and <модуль>.OBJ
>Они, конечно, не сильно мешают... но их уже больше 400!:x
Насчет того , что не сильно мешают:
у меня такое же сообщение , и когда я в одном модуле задаю границу массива , программа создает копию , и при этом при обращении к этому коду из другого модуля значение остается неициализированным.
та же проблема: один .h с константами, подключается в нескольких местах. по идее, все константы защищены от редифайна (парой #ifndef / #define, #endif). на все константы выдается подобный ворнинг во всех файлах где включается хедер. как с этим бороться?
Объявить все константы в одном файле и везде подключать его
Цитата:
Originally posted by SEDEGOFF
Объявить все константы в одном файле и везде подключать его
Объявить все константы в одном файле и везде подключать его
так по идее и делается:
constant.h:
#ifndef ___CONSTANTS
#define ___CONSTANTS
int VARIABLE1 = XXX;
int VARIABLE2 = YYY;
...
#endif
file1.cpp:
#include "constants.h"
...
int v1 = VARIABLE1;
...
file2.cpp:
#include "constants.h"
...
int v2 = VARIABLE2;
...
etc
В итоге при линковке имеем предупреждения типа Public symbol VARIABLE1 defined in both module file1 and file2
а может попробывать
так по идее и делается:
constant.h:
...
extern int VARIABLE1 = XXX;
extern int VARIABLE2 = YYY;
...