如何在QT中使用extern整数?

时间:2014-08-21 03:59:24

标签: c++ qt extern

仅供参考:这不是一个完整的程序,但几乎与我的一样。 据我所知,

我有一个头文件:

header.cpp

extern int global_x;

mainWindow.cpp

#include "header.cpp" 

int global_x=1;

a.cpp

#include "header.cpp"

int global_x;
cout << global_x;

但是我的global_x是0 ...为什么?????如果我取出global_x那么它将无法编译。 有人可以举一个QT中解决这个问题的简单程序的例子吗?我在网上看了很多东西,但大多数C使用extern和C ++没那么多。感谢。

2 个答案:

答案 0 :(得分:0)

基本上,当你编译你的程序时,包含文件就像这样:

<强> a.cpp

extern int global_x;

int global_x;
cout << global_x; 

正如您所看到的,当您尝试编译a.cpp时,global_x永远不会初始化为1.而是默认初始化为0(因为它是全局的)。这就是为什么你把它看作0的原因。

答案 1 :(得分:0)

首先,您遇到了链接问题,当您从mainWindow.o链接该程序时,您不会包含app.cpp。因此,链接器抱怨缺少global_x。如果您正在使用Qt(已标记),并设法做到这一点,那么您可能做错了。

然后您将另一个 global_x添加到app.cpp,并将其保留为默认值零(如果您未明确初始化它们,则全局和静态变量具有此值)。

因此,总而言之,就构建系统而言,mainWindow似乎不属于您的应用程序。解决了这个问题。