<>", NULL }, { -6ren">
gpt4 book ai didi

循环遍历数组遍历元素计数

转载 作者:行者123 更新时间:2023-11-30 15:46:47 27 4
gpt4 key购买 nike

我有这个数组:

static const Layout layouts[] = {
{ "[]=", tile },
{ "><>", NULL },
{ "[M]", monocle },
};

这个函数应该循环遍历数组:

int
cyclelayout(const Arg *arg) {
static unsigned short int layout = 0;
if (++layout >= sizeof(layouts)/sizeof(layouts[0])) {
layout = 0;
}
setlayout( &((Arg) {.v = &layouts[layout]}));
}

当它被调用时,它应该设置下一个布局,或者如果超出数组元素则返回到 0。但它遍历了数组元素并且程序崩溃了。我不知道出了什么问题?

参数和布局:

typedef union {
int i;
unsigned int ui;
float f;
const void *v;
} Arg;

typedef struct {
const char *symbol;
void (*arrange)(Monitor *);
} Layout;

完整的程序: dwm-6.0 dwm-6.0-cyclelayout.patch

最佳答案

int  // This says to return an int.
cyclelayout(const Arg *arg) {
static unsigned short int layout = 0;
if (++layout >= sizeof(layouts)/sizeof(layouts[0])) {
layout = 0;
}
setlayout( &((Arg) {.v = &layouts[layout]})); // This doesn't look like valid C to me?

return 4; // http://xkcd.com/221/
}

如果你的函数应该“循环遍历数组”,它不应该在某个地方有一个循环吗?

循环有以下几种风格:

for
do-while
while

我在您的函数中没有看到任何这些关键字,因此我断定它不会“循环”任何内容。

关于循环遍历数组遍历元素计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025059/

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