我有一个可以完美编译的项目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
编辑了我所有的源代码。
我不知道是怎么回事。我会很高兴有任何线索。