나는이 배열을 요소의 수를 넘어 :사이클링
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으로 설정합니다. 하지만 배열 요소를 넘기고 프로그램이 충돌합니다. 나는 틀린 것을 계산할 수 없다?
의 Arg 및 레이아웃 :
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
cyclelayout()은 'int'를 반환해야하지만 아무 것도 반환하지 않습니다. 따라서 무언가를 리턴하는지, 리턴 타입을'int'에서'void'로 변경하십시오. 이것은 귀하의 문제를 해결할 수는 없지만 적어도 귀하가 다른 두 가지 질문 (질문 제목에있는 질문과 질문 자체에있는 질문 중 하나)을 묻는 문제를 해결합니다. –
완전한 프로그램 하나를 올리십시오. 컴파일하고 실행할 수 있습니다. –
진지한가? ** 창 관리자 **입니다. 컴파일하고 ** 실행할 수있는 완전한 프로그램을 게시하십시오. 그것은 완전히 새로운 X11 세션을 시작할 필요없이 코드를 샅샅이 뒤지는 일없이 트로이 목마가 아니며 결과를 재현 할 수 있는지 확인하십시오. –