如何在QT中使用外部整数

How to use extern integer in QT?

本文关键字:外部 整数 QT      更新时间:2023-10-16

供参考:这不是一个完整的程序,但看起来很像我的程序。据我所知,

有一个头文件:

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++使用的不是那么多。谢谢。

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

a.cpp

extern int global_x;
int global_x;
cout << global_x; 

可以看到,当您尝试编译a.p cpp时,global_x从未初始化为1。相反,它默认初始化为0(因为它是一个全局变量)。这就是为什么你看到它是0

首先你有一个链接问题,当你从app.cpp链接程序时,你不包括mainWindow.o。所以,linkker抱怨缺少global_x。如果你正在使用Qt(标记),并设法做到这一点,你可能做错了。

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

所以,总结一下,似乎mainWindow不是你的应用程序的一部分,就你的构建系统而言。修复。