0

新手需要帮助。此代码适用于 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;
        }
}
4

1 回答 1

2

在声明函数原型的那一刻,struct data程序没有已知的东西,因为结构声明出现在更下方。

将结构声明移到函数原型之上。

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

于 2013-09-30T14:16:50.960 回答