错误:预期')'之前

时间:2017-09-23 11:25:35

标签: 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;
}

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

  

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

我尝试更改此内容但它一直给我这个错误并停止编译。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

你的原始代码(在编辑之前)在参数类型和参数名称之间缺少逗号(根据SYSCALL_DEFINE2定义需要)。

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

修改

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