修改全局变量
changing global variables
我正面临c++中全局变量的问题。我有一个函数叫iDraw()
。我计划在这里写两段代码,这两段代码将由一个名为flag
的global variable
控制。在main函数中,如果我将flag
设置为1,然后调用iDraw
,则执行一部分代码;如果我设置flag为2,然后调用它,那么代码的另一部分将被执行。但它并没有发挥预期的作用。似乎当我在主函数中改变flag的值时,它不起作用。它仍然保存着我最初在程序顶部声明的值。克服它的办法是什么?我使用了一个名为global.h
的头文件,在那里我声明了所有的全局变量。
extern int flag=0, animflag=1;
/*
function iDraw() is called again and again by the system.
*/
void iDraw()
{
//place your drawing codes here
if(flag==1){
iClear();
iSetcolor(0,0,128);
iShowBMP(0,0, "Images\intro.bmp");
}
if(flag==2){
//other codes here
}
}
int main()
{
iInitialize(900, 500, "demooo");
animflag=0;
flag=1; // seems like this line has no impact
iDraw();
return 0;
}
我使用了一个名为global.h的头文件,在这里我声明了所有的全局变量。
如果你的程序包含多个.cpp文件,其中包括这个global.h,那就有问题了。因为每个.cpp文件都有自己的flag
变量副本,更改其中一个副本不会更改其他副本。
必须在.cpp文件中定义全局变量。在global.h中,你可以提供extern
声明。
//*.cpp
int flag = 0;
//global.h
extern int flag;
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- 在 C++17 中修改 constexpr 函数中的全局变量
- 避免使用大量全局变量或使其易于访问和修改的最佳方法
- 可修改全局变量c++
- C++:无法修改全局变量
- 当 f & g 修改相同的全局变量时,表达式 f() 的值是否> g() 未定义或未指定?
- 访问全局变量以修改值
- 并发修改和读取单个全局变量
- 修改全局变量