c++ - 全局变量不更新自身 - 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 ?
解决方案
您在 MY_GLOBALS_H 中声明全局变量标志:
extern int flag;
然后在 MainWindow.cpp 中定义它:
int flag; // this essentially means "int flag = 0;"
然后在 main.cpp 中再次定义它:
int flag = 0;
您可以多次声明一个变量,但它必须只定义一次。
推荐阅读
- aws-lambda - Serilog CloudWatchSink 不适用于 Lambda 函数
- javascript - regex to mask phone number such that except first 2 and last 2 characters in a number are replaced with * in javascript
- jmeter - Opco 的 Jmeter 脚本
- apache-spark - 根据另一个表spark sql计算每一行
- ejs - 如何阻止 csslint 和 jshint 在 Atom 中对我的 EJS 进行 linting?
- openstack - Openstack HEAT:通过 HEAT 模板手动将新实例添加到现有堆栈
- python - python - 列出熊猫数据框
- android - 如何使底部导航栏可见?
- php - PHP中变量周围的括号有什么作用?
- python - Discord Python - 如何让 BOT 说出频道的所有消息?