包含由多个编译器

时间:2016-04-23 05:26:37

标签: c++ templates

我们有一个包含很多类模板的C ++头文件,如 myclasstemplates.h 假设有两个源文件 a.cpp b.cpp ,其中包含此头文件。 我使用英特尔编译器从a.cpp生成静态库 a.lib 。 然后我使用带有MSVC编译器的b.cpp生成一个动态库,并将静态库(a.lib)链接到这个动态库中。

我在a.cpp中定义了这样的语句,

#ifdef __INTEL_COMPILER
cout<<"I am compiled by icc";
#else
cout<<"I am compiled by msvc";
#endif

注意:__ INTEL_COMPILER是为英特尔编译器定义的,我已对其进行了验证。

当我运行动态库时,我看到“我是由msvc编译的”,我似乎并不理解。基本问题是在动态库生成的链接阶段,在编译a.cpp和b.cpp期间生成的类的模板代码是否被覆盖?

由于

0 个答案:

没有答案