Мы пытаемся скомпилировать программу на машине серии Tandem X, но мы получаем ошибки в форме «Недопустимое дублирующее определение инициализированный элемент данных на C и/или C++ ". Этот же код успешно компилируется для нас на машине серии Tantem S.Ошибка: (Неверное дублирующее определение инициализированного элемента данных) в серии Tandem X для кода C++
Мы имеем следующие структуры файла:
/---AddressMap.h----/
#ifndef ADDRESSMAP // Header file macro
#define ADDRESSMAP // Header file macro
typedef map<long,char*,less<long> > gAddress; data type
gAddress::iterator gAddressIterator; // define iterator
gAddress gAddressMap; // define variable
#endif//ADDRESSMAP
/*file1.cpp: -> Первый файл с помощью AddressMap */
#include "AddressMap.h" // include file
/*file2.cpp: -> Второй файл также используя AddressMap */
#include "AddressMap.h" // include file
Проблема
Оба файла компилируются успешно, но связывая их вместе не удается с ...
Illegal duplicate definition of the initialized data item gAddressMap in file1.o and in file2.o
Поскольку оба файла должны получить доступ к этой переменной, как включили заголовочный файл; возможно, это несет ответственность за ошибку. Кроме того, это существующий код, поэтому мы хотим избежать изменения основного кода. В частности, мы хотим сохранить одинаковые заголовочные файлы и имена переменных.
Как мы можем устранить эту ошибку?
Тандем Детали:
- X серии
- Linker используется XLD (НЛД не доступен на этой серии)