#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
). Это незаконно.