错误:预期' =',',',&#39 ;;',' asm'或' __属性__'之前' {'代币

时间:2015-04-18 15:30:09

标签: c compiler-errors

这是主要的。

int
main(int argc, char *argv[]) {
    char statement[MAX_LINE];
    int statement_len;
    char type[MAX_LINE];
    char var[MAX_LINE];

    /* Print the output header comment */
    printf(OUTPUT_HEADER, argv[0]);

    /* Loop through statements read on stdin */
    while ((statement_len = next_statement(statement,MAX_LINE)) > 0) {
        printf("%s;\n",statement);
        sscanf(statement,"%s %s",type,var);
        var_lib_check(type,var);
        var_replace(statement,statement_len);
    }
    return 0;
}

这是发生错误的函数。

void
var_replace(char statement, int statement_len){
int i;
int x;

for (i = 0; i < statement_len; i++){
    for (x = 0; x < num_of_var; x++){
        if (strcmp(var_library[x],statement[i]) == 0){
            printf("hello");
        }
    }
}
return;
}

错误:

  

在'{'令牌

之前预期'=',',',';','asm'或'属性'

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的功能是

void var_replace(char statement, int statement_len){

所以,它期望一个角色成为第一个参数。但你传递的是一个字符串

char statement[MAX_LINE];
var_replace(statement,statement_len);
               ^
              statement is a character array

这是一个问题。然后在你的函数中,你使用

if (strcmp(var_library[x],statement[i]) == 0){
                                    ^
                                  but statement is a character, not a string

如果要检查每个字符,请不要使用strcmp()