【发布时间】:2012-02-06 05:18:34
【问题描述】:
我有一个想要在多个文件之间共享的全局变量。让我们称之为:
库.cpp:
HookContext g_context;
然后,我还有另外两个文件希望在以下位置访问这个全局文件:
A.cpp:
extern HookContext g_context;
B.cpp;
extern HookContext g_context;
当我将所有这些文件链接在一起时,我的链接器会抱怨以下警告:
B.obj : error LNK2005: "class HookContext g_context" (?g_context@@3VHookContext@@A) 已在 A.obj 中定义
我是否错误地使用了 extern?我应该怎么做才能访问 A 和 B 中的上下文?
注意:在这种情况下,我不希望使用任何头文件来定义上下文。
谢谢
【问题讨论】:
-
不,A 和 B 是完全不同的文件,定义了完全不同的类的行为。
-
精彩回答here
-
AFAIK 你需要使用标题才能正确完成
-
由于 A 和 B 使用完全相同的代码...这与使用 #include 本质上不一样吗(除了可维护性问题)?
-
所示代码是合法的。如果把
main,HookContext的定义什么都没有加到这3个单行文件中,编译链接,还有错误吗?