全局变量不更新自身 - c ++

时间:2018-06-06 12:26:03

标签: c++ qt global-variables global

这是我想要实现的一个简单示例: 我有一个头文件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?

1 个答案:

答案 0 :(得分:2)

在MY_GLOBALS_H中声明全局变量标志:

extern int flag;

然后在MainWindow.cpp中定义

int flag; // this essentially means "int flag = 0;"

然后在main.cpp中再次定义它:

int flag = 0;

您可以多次声明变量,但必须只定义一次。