Это простой пример того, чего я пытаюсь достичь:
У меня есть заголовочный файл 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).
Это означает, что флаг был установлен в 1 уже, когда он достигает MainWindow.cpp, тогда зачем показывать значение флага, равное 0?
Вы объявлять флаг глобальной переменной в MY_GLOBALS_H:
extern int flag;
Ты тогда определять это в MainWindow.cpp:
int flag; // this essentially means "int flag = 0;"
А затем вы снова определяете это в main.cpp:
int flag = 0;
Вы можете объявлять переменную много раз, но она должна быть определена ровно один раз.
Других решений пока нет …