在C中使用结构作为输入的语法

时间:2014-04-22 12:28:34

标签: c function struct

我试图将一个程序分成几个部分(例如,将函数分开编写而不是在同一个文件中)。我使用的函数输出结构数组,当我在一个文件中将所有内容放在一起时,它运行正常。我想知道如何正确地调用这个结构函数,虽然从我的主要文件中。目前,我有这个:

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);

我希望这可以解释好!!关于这些错误意味着什么以及如何解决它们的任何想法?提前谢谢!

2 个答案:

答案 0 :(得分:0)

错误告诉您的是struct boat_params尚未定义。您需要在使用它之前对其进行定义。

这通常通过使用头文件来完成,您需要时#include。通常将结构定义和函数原型放在头文件中。

答案 1 :(得分:0)

struct boat_params的定义和submerged_volume()的声明放在头文件中。在main.csubmerged_volume.c中包含该文件。单独编译和链接:

gcc -c main.c
gcc -c submerged_volume.c
gcc main.o submerged_volume.o -o main