Вызов структуры для основной функции из файла заголовка

#c #struct

#c #структура

Вопрос:

У меня есть два файла заголовков и основная программа.

Заголовочные файлы — это data.h и flight.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 s, подобные

 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(amp;speed,amp;spin,amp;fData);
     getch();
}
  

Это то, что я сделал в основной функции.Он показывает ошибку C2275: ‘flightParamsType’: незаконное использование этого типа в качестве выражения
см. Объявление ‘flightParamsType’;
синтаксическая ошибка: отсутствует ‘;’ перед идентификатором ‘FData’

Комментарии:

1. Ну, вы не можете «вызывать» структуры. Вы бы #include "data.h" это сделали, вы бы это сделали? Если да, то в чем собственно проблема (т.Е. Покажите нам некоторые ошибки компилятора, код и другую соответствующую информацию)?

2. Да, я включил ее в основную программу. Смотрите, это так. Я создал файл заголовка с именем flightmodel.h, который содержит следующее: #ifndef __FLIGHT_MODEL_H #define __FLIGHT_MODEL_H #включить «Data.h» аннулировать calculateFlight(speedParamsType *скорость, spinParamsType * вращение, flightParamsType *FData); Data.h содержитструктуры typedef, такие как typedef struct { float totalSpin; float spinAxis; float backSpin; float SideSpin; }spinParamsType; Теперь я хочу вызвать структуры в основной функции моей программы

3. Поскольку вы можете вызывать только функции на C, а не структуры, немного сложно понять, что вы имеете в виду. Вы бы не сделали ничего другого, если бы весь этот код был в вашем основном файле, а не в нескольких файлах файлах заголовков. Теперь, пожалуйста, обновите свой вопрос кодом, опубликованным в вашем комментарии здесь, тем, что вы пытались сделать в своей main() функции, и любыми ошибками компилятора, которые вы получаете.

Ответ №1:

Вот один пример использования, обратите внимание, что, кроме #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(amp;a, amp;b, amp;c);

    return 0;
}
  

Не забудьте скомпилировать все файлы исходного кода и связать их вместе

Комментарии:

1. В структуре spinParamter у меня есть 3 переменные, а именно sspin, bspin, totalspin. если мне нужно присвоить этим переменным отдельные значения, как мне это сделать в основной функции?

2. У вас есть строка, в которой говорится: fData.carry= Это неполный оператор, в нем отсутствуют значение и точка с запятой. О чем fData.carry= 1234; ?

3. Я собирался ответить на это. FData содержит выходные параметры, которые должны быть показаны путем вычисления параметров вращения в структуре.

Ответ №2:

У вас есть дополнительное, повторяющееся объявление flightParamsType fData между операторами:

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

(в дополнение к тому, что находится в начале main ). Это незаконно.