gpt4 book ai didi

c++ - 改变全局变量

转载 作者:行者123 更新时间:2023-11-28 03:18:58 24 4
gpt4 key购买 nike

我遇到了 C++ 中全局变量的问题。我有一个名为 iDraw() 的函数。我计划在这里写两段代码,它们将由一个名为 flagglobal variable 控制。在主函数中,如果我将flag设置为1,然后调用iDraw,那么将执行一部分代码;如果我将标志设置为 2 然后调用它,那么代码的另一部分将被执行。但它并没有正常工作。似乎当我在主函数中更改标志的值时,它没有工作。它仍然保留我最初在程序顶部声明的值。克服它的解决方案是什么? 我使用了一个名为 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;
}

最佳答案

i used a header file named global.h where i declared all the global vars.

如果您的程序包含不止一个包含此 global.h 的 .cpp 文件,则会出现问题。因为每个 .cpp 文件都有自己的 flag 变量拷贝,更改其中一个不会更改另一个拷贝。

您必须在其中一个 .cpp 文件中定义全局变量。在 global.h 中,您可以提供 extern 声明。

//*.cpp
int flag = 0;

//global.h
extern int flag;

关于c++ - 改变全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com