错误:被调用的对象不是函数

时间:2017-02-08 15:31:54

标签: c

尝试使用指针

创建一个浮点数组
int main(void)
{
    int num_of_dataSets;
    float **dataSets;   
    int i;
    float *get_data;

    printf("Enter the number of data sets: \n");
    scanf( "%d " , &num_of_dataSets);
    dataSets = malloc(num_of_dataSets * sizeof(float) );

    for( i=0; i < num_of_dataSets; i++)
    {
        *(dataSets + i) = get_data();
    }

}


float* get_data()
{
    float *float_list_data;
    int j;
    int num_of_floats;

    printf("Enter the data: \n");
    scanf("%d" , &num_of_floats);

    float_list_data = malloc( num_of_floats * sizeof(float) );
    return float_list_data;
}

获取名为object“get_data”的错误不是一个函数。 我不能让错误消失。我错过了什么?!

2 个答案:

答案 0 :(得分:1)

两件事:

  1. 除了名为get_data的函数外,您的函数中还有一个名为get_data的局部变量。重命名其中一个以避免这种命名混淆。

    编辑:您似乎甚至没有在float* get_data;中使用变量main()。您可以将其删除。

  2. 如果您调用编译器无法找到或不知道的函数,它会假定它只是从其他地方链接到(例如,链接器知道的其他库),并返回int。在代码中get_data()下方定义get_data()之前,请致电main()。要避免此错误,请在get_data()之前对函数main()进行原型设计,如下所示:

    float* get_data();
    int main(void)
    { 
        /* Your code here */
    }
    float* get_data()
    {
        /* Your code here */
    }
    

答案 1 :(得分:1)

当编译器解析您的代码时,它会将get_data名称作为函数名称两次获取,并将float *作为get_data。现在,当它到达一个函数调用时,它只是检查符号表然后就会混淆并说它找不到名为float*的函数,因为它已经被声明为sys.partitions