首页 > 解决方案 > 全局变量不更新自身 - C++

问题描述

这是我想要实现的一个简单示例:我有一个头文件 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 那么为什么要显示标志的值等于 0 ?

标签: c++qtglobal-variablesglobal

解决方案


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

extern int flag;

然后在 MainWindow.cpp 中定义它:

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

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

int flag = 0;

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


推荐阅读