2013-07-20 32 views
-1

的输出我写了这个代码,但是当试图编译它,它会返回THID错误:结构作为一个功能

:24:8: error: conflicting types for ‘safe_syscall’ 
:19:10: note: previous implicit declaration of ‘safe_syscall’ was here 

我指定的行数。

typedef struct syscall ditem; 

void safe_syscall_set (vmi_instance_t vmi) 
{ 
    ditem *head,*tmp = NULL; 
    char *name; 
    int num; 
    FILE * fp; 
    fp = fopen ("syscall.list", "r");//file including syscall names and numbers in format "name number" 
    //read file of syscalls and numbers 
    while(fscanf(fp, "%s %d",name, &num)!= EOF); 
    { 
     tmp = head; 
/* 19 */ 
     head = safe_syscall(name,num,tmp,vmi); 
    } 
    return; 
} 

/* 24 */ 
ditem *safe_syscall (char *syscall,int num,ditem *head,vmi_instance_t vmi) 
{ 
    uint64_t *sys_call_table = 0xffffffff816003e0; 
    uint64_t *memory = (uint64_t *) malloc(sizeof(*sys_call_table)); 

    char *path = "/home/ossl5/sysmap";//hardcoded 
    FILE *fp; 
    fp=fopen(path,"r"); 
    if(!fp) 
    { 
     printf("ERROR CAN NOT OPEN SYSTEM.MAP FILE\n"); 
     goto exit; 
    } 
    curr = (ditem *)malloc(sizeof(ditem)); 
    curr->num = num; 
    curr->next = head;//new nodes are being added to head of the list 
    head = curr; 
    curr->sys_name = syscall; 
    //Calculating syscall handler size 
    curr->size = sys_routine_size(fp,syscall,num); 
exit: 
    return head; 
} 

我猜东西是错误的结构作为output.This结构是一个链表,每个调用safe_syscall功能,新节点添加到列表的头部和新头由该函数返回的时间。

+2

是什么'24'这里'24 ditem * safe_sys' –

+1

@GrijeshChauhan语法错误。 – 2013-07-20 08:47:51

+1

我认为19和24是错误消息中指示的行号。 - 可能应该把它们放在评论中;-) – John3136

回答

4

您还没有宣布safe_syscall()所以假定返回一个int。尝试在第一次通话之前发出声明ditem *safe_syscall (char *syscall,int num,ditem *head,vmi_instance_t vmi);