参数与C中的原型不匹配

时间:2015-11-23 00:58:26

标签: c function prototype

我应该为杂货店库存编写代码,在单独的函数中进行计算。我已经运行了没有该功能的代码,一切运行正常,但只要我添加功能,我遇到了麻烦。我一直收到错误告诉我:

c:55:6:错误:参数'b'与原型不匹配 c:3:6:错误:原型声明

我尝试过使用我通过这些功能的价值观,但它似乎并没有起作用。我对数组很新,所以我可能会遗漏一些明显的东西。任何帮助将不胜感激!

#include <stdio.h>

void value_calc(int, float);

int main(){

        int barcode[100], quantity[100], i;
        double price[100], value[100], value1;


                printf("Grocery Store Inventory\n");
                printf("=======================\n");

        for(i=0;i<100;i++){

                printf("Barcode   :  ");

                        scanf("%d", &barcode[i]);

        if (barcode[i]==0){

                break;

        }

                printf("Price     :  ");
                        scanf("%lf", &price[i]);

                printf("Quantity  :  ");
                        scanf("%d", &quantity[i]);

        value_calc(quantity[i],price[i]);

        }


                printf("\n             Goods in Stock\n");
                printf("             ==============\n\n");

                printf("Barcode    Price    Quantity    Value\n");

                printf("-------------------------------------\n");

        for(i=0;i<100 && barcode[i] !=0;i++){


                printf("%d  %.2lf    %8d     %.2lf\n", barcode[i], price[i], quantity[i]);

        }

return 0;

        }

void value_calc(a,b){

        double value1;

        value1 = a*b;


        }

2 个答案:

答案 0 :(得分:3)

问题是你的value_calc定义省略了参数类型:

void value_calc(int, float);

void value_calc(a,b) {
  ..
}

C允许您省略参数类型,但默认情况下它们变为int(在GCC和Clang上使用-Wimplicit-int启用警告)。现在,您有一个int, float的声明和int, int的定义,它与之不匹配。试试:

void value_calc(int a, float b) {
  ..
}

答案 1 :(得分:2)

声明

void value_calc(int, float);

与函数本身不匹配:

void value_calc(a,b)
...

因为默认情况下所有函数参数都是int。在函数中使用与声明本身相同的声明:

void value_calc (int a, float b)
...

注意:我也在这一行收到警告,您应该查看它:

<stdin>:46:50: warning: more '%' conversions than data arguments [-Wformat]
            printf("%d  %.2lf    %8d     %.2lf\n", barcode[i], price[i], quantity[i]);