0

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

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

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

有人可以建议我为什么会收到此错误吗?

4

1 回答 1

2

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

int global_value = 0;

在 inl 文件中,有:

extern int global_value;

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

于 2012-06-30T19:30:10.280 回答