У меня есть проект, который отлично компилируется с gcc
, но не компилируется в среде Greenhills Integrity.
Проблема сводится к этим трем файлам:
MyVector.cpp // contains function testVector
MyVector.hpp // contains template vector<>
SomeFile.cpp
MyVector.hpp
содержит шаблон-класс для вектора, а MyVector.cpp
содержит функцию тестирования, не связанную с шаблонами MyVector.hpp
.
Теперь, когда я использую MyVector.hpp
vector
шаблоны в SomeFile.cpp
, каким-то образом функция testVector
вводится в SomeFile.cpp
. Когда я перестаю использовать vector
в SomeFile.cpp
(я все еще #include
, конечно, я просто не создаю там шаблон), он работает отлично.
Более того, когда я вводил предупреждение в функцию testVector
, компилятор отображал предупреждение , когда я компилировал SomeFile.cpp
!
Более того, система сборки перекомпилирует SomeFile.cpp
, когда я что-то изменяю в MyVector.cpp
.
Когда я удаляю функцию testVector
из MyVector.cpp
и перемещаю ее в новый NewFile.cpp
- он компилируется.
Нет, я не включил файл cpp
по ошибке, честно, я дважды проверил его и grep
отредактировал весь свой исходный код.
Понятия не имею, что происходит. Я буду рад любой подсказке.