void(*prr)[4](int , int*, int*) = { up,down,left,right};
时间: 2023-08-28 07:59:36 浏览: 75
这是一个指向函数指针数组的声明语句。名为 `prr`,类型为指向函数指针的指针,每个函数指针都接受两个 `int` 类型的参数,并返回 `void`。数组的大小为 4,表示有 4 个函数指针。
同时,数组被初始化为 `{ up, down, left, right }`,其中 `up`、`down`、`left`、`right` 是函数指针。这意味着 `prr` 数组中的每个元素都指向一个特定的函数。
请注意,我没有具体了解这些函数的实现,所以无法提供更多关于这些函数的信息。
相关问题
Compile error: /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c: In function 'play': /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:41: warning: initialization of 'void (*)(int, int *, int *)' from incompatible pointer type 'void (*)(int (*)[10], int *, int *)' [-Wincompatible-pointer-types] void(*prr[4])(int , int*, int*) = { up,down,left,right}; ^~ /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:41: note: (near initialization for 'prr[0]') /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:44: warning: initialization of 'void (*)(int, int *, int *)' from incompatible pointer type 'void (*)(int (*)[10], int *, int *)' [-Wincompatible-pointer-types] void(*prr[4])(int , int*, int*) = { up,down,left,right}; ^~~~ /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:44: note: (near initialization for 'prr[1]') /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:49: warning: initialization of 'void (*)(int, int *, int *)' from incompatible pointer type 'void (*)(int (*)[10], int *, int *)' [-Wincompatible-pointer-types] void(*prr[4])(int , int*, int*) = { up,down,left,right}; ^~~~ /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:49: note: (near initialization for 'prr[2]') /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:54: warning: initialization of 'void (*)(int, int *, int *)' from incompatible pointer type 'void (*)(int (*)[10], int *, int *)' [-Wincompatible-pointer-types] void(*prr[4])(int , int*, int*) = { up,down,left,right}; ^~~~~ /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:54: note: (near initialization for 'prr[3]')
这个编译警告是因为你尝试将一个接受 `int (*)[10]` 类型参数的函数指针赋值给接受 `int*` 类型参数的函数指针。这两者是不兼容的类型,因此编译器给出了警告。
要解决这个问题,你需要确保函数指针数组 `prr` 的元素类型与函数 `up`、`down`、`left`、`right` 的类型匹配。如果这些函数的参数类型是 `int (*)[10]`,而不是 `int*`,那么你需要相应地更改函数指针数组的声明。
你可以检查一下函数 `up`、`down`、`left`、`right` 的定义,确保它们的参数类型与你所期望的一致。然后,根据实际情况修改函数指针数组的声明,确保类型匹配。这样就可以解决编译警告了。
Compile error: /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c: In function 'play': /storage/emulated/0/Android/data/com.cjkj.clanide/files/CJ_IDE/CProject/我的/src/game.c:31:11: error: declaration of 'prr' as array of functions void(*prr)[4](int , int*, int*) = { up,down,left,right}; ^~~
这个编译错误是因为函数指针数组的声明语法有误。正确的声明语法应该是:
```c
void(*prr[4])(int, int*, int*) = { up, down, left, right };
```
注意,`[4]` 应该放在 `prr` 的后面,表示 `prr` 是一个由 4 个函数指针组成的数组。请将声明语句修改为上述形式,然后重新编译你的代码,应该就能够解决这个错误了。
阅读全文