【发布时间】:2017-02-06 14:16:19
【问题描述】:
我不确定这是否可能。从我看到的所有示例中,数组是在{ } 括号内定义的,但就我而言,这不太可能。
我想要做的是将它保留在我的绘图函数中,以绘制多个逐渐增大的圆圈。
我使用调试器得到的是每次循环命中时都会重置静态数组。
我也尝试过类似static Rect rc[5] = {}
void fun_called_every_five_seconds() {
static Rect rc[5];
for (int i = 0; i < count; i++) {
int x = rand()%400;
int y = rand()%400;
int r = rand()%200;
rc[i] = Rect (x,y,r,r);
}
rc[0].X += 50;
// I check value of rc[0].X right here
}
【问题讨论】:
-
代码在什么上下文中?代码和
static数组是否都在函数内,或者static是否在命名空间范围内?请给minimal reproducible example -
@KABoissonneault 添加了示例。从计时器中,该函数每 5 秒调用一次。
-
每次调用函数时都会执行
for循环。 -
@JohnnyMopp 因为在更大的范围内不需要这个数组(下一个选项是全局的?),有没有办法只填充一次数组?我认为通常你可以这样做,比如
static int = 5; -
static int s_something = 5;之所以有效,是因为它正在初始化,您无法重新初始化,因此如果在其他地方重新定义了该值,则该值不会“切换回”。