C ';取消引用指向不完整类型的指针';在编译FreeBSD时,自定义系统调用
编译此代码时出现编译错误:C ';取消引用指向不完整类型的指针';在编译FreeBSD时,自定义系统调用,c,compiler-errors,C,Compiler Errors,编译此代码时出现编译错误: #include <sys/param.h> #include <sys/system.h> struct syshello_args { char *buf; }; int sys_myhello(p, uap) struct proc* p; struct syshello_args* uap; { sprintf(uap->buf, "Hello"); p->p_retval[0]=0; ret
#include <sys/param.h>
#include <sys/system.h>
struct syshello_args
{
char *buf;
};
int sys_myhello(p, uap)
struct proc* p; struct syshello_args* uap;
{
sprintf(uap->buf, "Hello");
p->p_retval[0]=0;
return 0;
}
#包括
#包括
结构syshello\u参数
{
char*buf;
};
int sys_myhello(p,uap)
结构程序*p;结构syshello_args*uap;
{
sprintf(uap->buf,“你好”);
p->p_retval[0]=0;
返回0;
}
我犯了很多错误:
我对C语言一点也不熟悉。我在几个教程中找到了这个例子,但是
这对我不起作用。有人能帮我纠正这个错误吗
谢谢你我觉得你的教程很奇怪。试着再找一个。至少,struct syshello_args中的buf在任何地方都找不到(在您的示例中没有malloc)。其次,在结束大括号后编写参数类型是一种非常古老的方法。而且,在我看来,用系统调用开始C不是一个好主意。它们是!这只是系统调用的实现,系统调用被假定为打印消息。是给freeBSD 4的。2@JIghtuse:
p
和uap
是sys_myhello
的参数;调用方应已传入有效值。这是一个老式的函数定义;现代的等价物是int sys\u myhello(struct proc*p,struct syshello\u args*uap){…}
Yes,但我不能在FreeBSD 4.2中使用它。