警告:从不兼容的指针类型传递'type_specifier'的参数2

时间:2015-10-10 10:46:53

标签: c

有人可以解释这些错误吗?我没有多维数组,所以我不明白我是如何得到这个错误的。

main.c:291: warning: passing argument 2 of ‘type_specifier’ from incompatible pointer type
main.c:263: note: expected ‘int *’ but argument is of type ‘int **’
main.c:291: warning: passing argument 3 of ‘type_specifier’ from incompatible pointer type

这是我的代码。我从main调用program()然后尝试从program()调用declaration_list()。

void declaration_list(char *strings_line_tokens[], int *big_boy_counter, int *lower_bound_of_big_boy_counter)
{
    int cmp_str1 = 0;
    int cmp_str2 = 0;
    int cmp_str3 = 0;
    printf("declaration_list().\n");
    cmp_str1 = strcmp("int", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    cmp_str2 = strcmp("float", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    cmp_str3 = strcmp("void", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    if(cmp_str1 == 0 || cmp_str2 == 0 || cmp_str3 == 0)
    {
        declaration(strings_line_tokens, &big_boy_counter, &lower_bound_of_big_boy_counter);
    }
    //declaration_prime();
    //declaration_list();
}

void program(char *strings_line_tokens[], int *big_boy_counter, int *lower_bound_of_big_boy_counter)
{
    int cmp_str1 = 0;
    int cmp_str2 = 0;
    int cmp_str3 = 0;
    printf("In program().\n");
    cmp_str1 = strcmp("int", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    cmp_str2 = strcmp("float", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    cmp_str3 = strcmp("void", strings_line_tokens[*lower_bound_of_big_boy_counter]);
    if(cmp_str1 == 0 || cmp_str2 == 0 || cmp_str3 == 0)
    {
        declaration_list(strings_line_tokens, &big_boy_counter, &lower_bound_of_big_boy_counter);
    }
}

1 个答案:

答案 0 :(得分:1)

declaration_list(strings_line_tokens, &big_boy_counter, &lower_bound_of_big_boy_counter);

在此big_boy_counter已经是int *,但您传递了它的地址。但是你的函数需要int *

您需要传递int *的第3个参数,但lower_bound_of_big_boy_counter也是int *并且您传递了它的地址。

在函数调用中只需将big_boy_counterlower_bound_of_big_boy_counter传递给它。像这样 -

declaration_list(strings_line_tokens, big_boy_counter, lower_bound_of_big_boy_counter);