我试图将一个程序分成几个部分(例如,将函数分开编写而不是在同一个文件中)。我使用的函数输出结构数组,当我在一个文件中将所有内容放在一起时,它运行正常。我想知道如何正确地调用这个结构函数,虽然从我的主要文件中。目前,我有这个:
void submerged_volume(double L1, double L2, double Lavg, double H, struct boat_params *values);
int main () {
double L1, L2, Lavg, H;
struct boat_params values[211];
L1 = 17.6;
L2 = 3;
Lavg = 4;
H = 4.5;
submerged_volume(L1, L2, Lavg, H, values);
unsigned char i = 0;
for (i = 0; i <= 90; ++i) {
printf("V = %lf\nUc = %lf\nVc = %lf\n", values[i].V, values[i].Uc, values[i].Vc);
}
return 0;
}
submerged_volume函数如下所示: void submerged_volume(double L1,double L2,double Lavg,double H,struct boat_params * results)
注意 - 当main位于同一个文件中时,它可以正常工作。目前,我在设置将它们放在单独文件中时所遇到的错误是:
friction_equilibrium.c:12:26: error: array has incomplete element type 'struct boat_params'
struct boat_params values[211];
^
friction_equilibrium.c:12:8: note: forward declaration of 'struct boat_params'
struct boat_params values[211];
^
friction_equilibrium.c:19:1: warning: implicit declaration of function 'submerged_volume' is invalid in C99 [-Wimplicit-function-declaration]
submerged_volume(L1, L2, Lavg, H, values);
我希望这可以解释好!!关于这些错误意味着什么以及如何解决它们的任何想法?提前谢谢!
答案 0 :(得分:0)
错误告诉您的是struct boat_params
尚未定义。您需要在使用它之前对其进行定义。
这通常通过使用头文件来完成,您需要时#include
。通常将结构定义和函数原型放在头文件中。
答案 1 :(得分:0)
将struct boat_params
的定义和submerged_volume()
的声明放在头文件中。在main.c
和submerged_volume.c
中包含该文件。单独编译和链接:
gcc -c main.c
gcc -c submerged_volume.c
gcc main.o submerged_volume.o -o main