2015-04-18 150 views
-3

這是主要的。錯誤:預期'=',',',';','asm'或'__attribute__'在'{'token

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; 
} 

錯誤:

expected '=', ',', ';', 'asm' or 'attribute' before '{' token

我該如何解決這個問題?

+5

爲了這行做的編譯器呢?我們不是GCC或clang,你知道 – ForceBru

+0

錯誤可能是在該函數之前,你可能沒有匹配大括號。 – Barmar

+0

語句是一個char變量,而您在'strcmp()'行中將它視爲一個char數組。 – mfro

回答

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()

+2

這是如何回答這個問題的? –

相關問題