模板函数编译错误

时间:2012-06-30 19:24:50

标签: c++

我有.inl和.cpp文件,.inl文件包含模板函数,我已经在下面声明了全局变量,

int global_value = 0; 并在编译该程序后,使用extern关键字链接到.cpp文件,我得到以下错误

多个声明错误 首先在这里定义错误

任何人都可以建议我为什么会收到这个错误?

1 个答案:

答案 0 :(得分:2)

简而言之 - 在cpp文件中,有:

int global_value = 0;

并在inl文件中,有:

extern int global_value;

全局变量应该在一个且只有一个翻译单元(cpp文件)中声明。所有其他翻译单元应直接或通过某些头文件使用extern。在您的情况下,包含.inl文件的每个转换都有效地声明全局,因此错误。所以,让它在cpp中声明,并将extern放在inl中(假设你在其他cpp文件中包含inl文件)。