c\main.c:26: error 27: Pointer required .\src\main.c:26: error 78: incompatible types
时间: 2023-06-25 20:06:01 浏览: 284
这两个错误提示,分别是:
- 错误 27:需要指针类型
- 错误 78:类型不兼容
可能的原因是你在代码中使用了错误的数据类型或错误的指针类型,导致编译器无法正确解析代码。
请检查涉及到第 26 行的代码,并确保所有的变量和函数调用都使用了正确的数据类型和指针类型。如果仍然无法解决问题,可以考虑将相关代码片段贴出来,以便更好地帮助你定位问题。
相关问题
In file included from /home/lmp/000/module/hello.c:2:0: /home/lmp/000/module/hello.c: In function ‘__exittest’: /home/lmp/000/module/hello.c:14:13: error: return from incompatible pointer type [-Werror=incompatible-pointer-types] module_exit(hello_exit); ^ ./include/linux/module.h:136:11: note: in definition of macro ‘module_exit’ { return exitfn; } \ ^ cc1: some warnings being treated as errors scripts/Makefile.build:337: recipe for target '/home/lmp/000/module/hello.o' failed make[2]: *** [/home/lmp/000/module/hello.o] Error 1 Makefile:1584: recipe for target '_module_/home/lmp/000/module' failed make[1]: *** [_module_/home/lmp/000/module] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.15.0-142-generic' Makefile:4: recipe for target 'all' failed make: *** [all] Error 2
这个错误是由于`module_exit()`的使用不正确导致的。`module_exit()`函数需要一个函数指针作为参数。该函数指针指向一个函数,该函数将在卸载模块时被调用。
你的代码中使用的是一个指向`void`类型的函数指针,而实际上它需要一个指向`void __exit`类型的函数指针。
要解决这个问题,请将你的`hello_exit()`函数的返回类型更改为`void __exit`,如下所示:
```
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye, world!\n");
}
module_exit(hello_exit);
```
这样做将把`hello_exit()`函数指定为正确的类型,并解决编译错误。
a.c:15:12: error: incompatible types when assigning to type ‘char’ from type ‘struct def’ c[x]=p[0];
这个错误是因为在第15行中,你尝试将一个结构体类型 `struct def` 赋值给一个字符类型 `char`,这两种类型是不兼容的,所以编译器会报错。
要解决这个问题,你需要检查一下你的代码逻辑,看看是否存在类型转换错误。如果你希望将结构体中的某个成员赋值给一个字符变量,你需要使用该成员的名称来访问它。例如,如果结构体中有一个名为 `ch` 的字符型成员,你可以使用 `c[x] = p[0].ch;` 来将它的值赋给字符数组 `c` 的第 `x` 个元素。
阅读全文