2011-04-10 118 views
2

“字符”我有下面的代码段,这时候我编译它,我得到:语法错误使用C

smash.c:22 error: syntax error before "char"

我不明白问题出在哪里。 (错误消息中第22行标记为/*22*/,但行号未出现在代码中)。我该如何纠正这个错误?

/*some comments...*/ 
/*some more comments...*/ 

#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <signal.h> 
#include <sys/types.h> 
#include <sys/wait.h> 
#include <errno.h> 

#include "dir_handling.h" 
#include "var_handling.h" 



#define  MAXLENGTH   80   

void error_print (char* str) 
{ 
    /*22*/ char *error_message=(*char)malloc((strlen(str)+strlen("smash error: > \"\"\n")+1)*sizeof(char)); 
    strcpy (error_message,"smash error: > \""); 
    strcat(error_message,str); 
    strcat(error_message,"\"\n"); 
    perror (error_message); 
    free (error_message); 
    // printf ("smash error: > \"%s\"\n",str); 
} 
... 

回答

3

应该(char*),如:

char *error_message=(char*)malloc(etc... 

但请注意:这是很好的做法不是强制转换malloc的返回......

+0

如果我不投'的malloc返回“以后会不会出问题? – SIMEL 2011-04-10 23:49:23

+0

@Ilya Melamed:不,它不会。 – 2011-04-10 23:50:17

+4

@Ilya Melamed:恰恰相反,* cast * malloc的结果可能会导致后面的问题。 – AnT 2011-04-10 23:56:29

3

(*char)应该是(char *)