这是我想要实现的一个简单示例: 我有一个头文件GlobalVar.h
#ifndef MY_GLOBALS_H
#define MY_GLOBALS_H
extern int flag;
#endif
MainWindow.cpp
#include "Globalvar.h"
int flag;
void function() {
qDebug() <<"Flag is"<<flag;
}
一个main.cpp
#include "GlobalVar.h"
int flag=0;
int main() {
if(true) {
flag=1;
qDebug() <<"Flag is"<<flag;
}
}
现在控制台输出显示标志的值为:“标志为1”(在行号:61)和“标志为0”(在行号:80)。
这意味着当标志到达MainWindow.cpp时已经设置为1,那么为什么要显示flag的值等于0?
答案 0 :(得分:2)
您在MY_GLOBALS_H中声明全局变量标志:
extern int flag;
然后在MainWindow.cpp中定义:
int flag; // this essentially means "int flag = 0;"
然后在main.cpp中再次定义它:
int flag = 0;
您可以多次声明变量,但必须只定义一次。