我有.inl和.cpp文件,.inl文件包含模板函数,我已经在下面声明了全局变量,
int global_value = 0; 并在编译该程序后,使用extern关键字链接到.cpp文件,我得到以下错误
多个声明错误 首先在这里定义错误
任何人都可以建议我为什么会收到这个错误?
答案 0 :(得分:2)
简而言之 - 在cpp文件中,有:
int global_value = 0;
并在inl文件中,有:
extern int global_value;
全局变量应该在一个且只有一个翻译单元(cpp文件)中声明。所有其他翻译单元应直接或通过某些头文件使用extern
。在您的情况下,包含.inl文件的每个转换都有效地声明全局,因此错误。所以,让它在cpp中声明,并将extern
放在inl中(假设你在其他cpp文件中包含inl文件)。