新手需要帮助。此代码适用于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;
}
}
答案 0 :(得分:2)
在声明函数原型时,程序不会知道struct data
这样的东西,因为结构声明显得更低了。
将struct声明移到函数原型上面。
(在Visual Studio中,某些C语言代码是否有效是一个很大的乐透,因为它几乎不遵循任何C标准。)