从头文件调用Struct到main函数

时间:2014-06-18 06:48:09

标签: c struct

我有两个头文件和一个主程序。

标题文件为data.hflight.h。主程序是calculateflight.c

数据头文件有一组typedef structs,其中包含程序运行所需的变量。

我创建了一个名为flightmodel.h的头文件,其中包含以下内容:

#ifndef __FLIGHT_MODEL_H
#define __FLIGHT_MODEL_H
#include "Data.h"

void calculateFlight(speedParamsType *speed, spinParamsType *spin,
                     flightParamsType *fData);

#endif

data.h包含typedef struct之类的

typedef struct {
  float totalSpin;
  float spinAxis;
  float backSpin;
  float sideSpin;
} spinParamsType;

struct variables中没有错误,但我不知道如何在主函数内调用struct

    void main()
{
     speedParamsType speed;
     spinParamsType spin;
     flightParamsType fData;
     speed.totalSpeed=200.0f;
     speed.launchAngle=30.0f;
     speed.horizontalAngle=5.0f;
     spin.totalSpin=1000.0f;
     flightParamsType fData;
     fData.carry=
     calculateFlightModel(&speed,&spin,&fData);
     getch();
}

这是我在main函数中所做的。它显示错误C2275:'flightParamsType':非法使用此类型作为表达式 见'flightParamsType'的声明; 语法错误:缺少';'在标识符'fData'之前

2 个答案:

答案 0 :(得分:0)

这是一个使用示例,请注意除了#include指令外,没有什么特别需要做的。

#include "flight.h"

int main(int argc, char *argv[])
{
   spinParamsType a = {1.0f, 1.0f, 1.0f, 1.0f};
   spinParamsType b = {2.0f, 2.0f, 2.0f, 2.0f};
   flightParamsType c; // I don't know what kind of members this struct have.

   calculateFlight(&a, &b, &c);

    return 0;
}

请记住编译所有源代码文件并将它们链接在一起

答案 1 :(得分:0)

您在声明之间有flightParamsType fData的额外重复声明:

     spin.totalSpin=1000.0f;
     flightParamsType fData;
     fData.carry=
     calculateFlightModel(&speed,&spin,&fData);

(除了main开头附近的那个)。这是非法的。