尝试传递二维数组后,“错误:数组类型具有不完整的元素类型”

时间:2013-09-30 13:33:56

标签: c gcc

新手需要帮助。此代码适用于Windows(Visual Studio 2012),但在GCC上我得到错误:“数组类型具有不完整的元素类型”,适用于下面的所有void类型函数。有人可以告诉我为什么吗? (这只是我所有代码的一部分)。 谢谢: - )

void initialize_arrays(struct data data_list[][ARRAY_SIZE]);
void read_file(struct data data_list[][ARRAY_SIZE]);
void print_struct_array(struct data data_list[][ARRAY_SIZE]);
void parallel_print(int thread_number, struct data data_list[][ARRAY_SIZE]);
void print_struct(struct data data_struct, int thread, int array_num, int elem_num);

struct data {
    char *name;
    int age;
    double lenght;
};

int main()
{
    struct data data_array[STRUCT_SIZE][ARRAY_SIZE];
    initialize_arrays(data_array);
    read_file(data_array);
    print_struct_array(data_array);
    parallel_print(6, data_array);
    getchar();
    return 0;
}

void initialize_arrays(struct data data_list[][ARRAY_SIZE])
{
    int i,j;
    for(i = 0; i < ARRAY_SIZE; i++)
        for(j = 0; j < STRUCT_SIZE; j++)
        {
            data_list[i][j].name = NULL;
            data_list[i][j].age = 0;
            data_list[i][j].lenght = 0.0;
        }
}

1 个答案:

答案 0 :(得分:2)

在声明函数原型时,程序不会知道struct data这样的东西,因为结构声明显得更低了。

将struct声明移到函数原型上面。

(在Visual Studio中,某些C语言代码是否有效是一个很大的乐透,因为它几乎不遵循任何C标准。)