Глобальная переменная не обновляется сама - c ++ - PullRequest
0 голосов
/ 06 июня 2018

Это простой пример того, чего я пытаюсь достичь: у меня есть файл заголовка GlobalVar.h

#ifndef MY_GLOBALS_H
#define MY_GLOBALS_H

extern int flag;

#endif

A 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).

Это означает, что флаг был установлен в 1 уже, когда он достигает MainWindow.cpp, тогда почему он показывает значение флага, равное 0?

1 Ответ

0 голосов
/ 06 июня 2018

Вы объявляете флаг глобальной переменной в MY_GLOBALS_H:

extern int flag;

Затем вы определяете его в MainWindow.cpp:

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

И затем вы снова определяете его в main.cpp:

int flag = 0;

Вы можете объявлять переменную много раз, но она должна быть определена ровно один раз.

...