错误:预期')'之前

Kha*_* Nd 0 c linux-kernel

所以我正在使用一个非常基本的新系统调用来重新编译Linux内核,但每次我尝试编译它时都会出错.

#include <linux/linkage.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/uaccess.h>

SYSCALL_DEFINE2(strcpy1, char *, dest, char *, src) {

 printk(KERN_ALERT "done system call strcpy...\n");

 return 1;
}
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我都会收到此错误.

cmps272/strcpy1.c:6:26:错误:预期')'在'char'之前令牌SYSCALL_DEFINE2(strcpy1,char*dest,char*src)

我尝试改变这一切,但它一直给我这个错误并停止编译.有任何想法吗?

小智 6

您的原始代码(在编辑之前)错过了参数类型和参数名称之间的逗号(根据SYSCALL_DEFINE2定义需要).

SYSCALL_DEFINE2(strcpy1, char *, dest, char *, src)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

编辑

修复了缺少逗号的问题,你仍然会错过#include <linux/syscalls.h>.它非常重要,因为它包含SYSCALL_DEFINE2()宏定义.请包括它.

  • 好.你错过了`#include <linux/syscalls.h>`. (3认同)