Во-первых, у меня есть структура данных struct cashier
, которую я определил и которую нужно инициализировать. Он помещается в файл queue.c
для использования queue.h
файла. 1
/* queue.c */
struct cashier {
int numberOfCustomersServed; /* This should be initialized to 0 */
int totalCustomerWaitingTime; /* This should be initialized to 0 */
float totalAmountReceived; /* This should be initialized to 0 */
queueADT customerQ; /* This should be initialized to an empty queue */
};
Затем у меня есть файл queue.h
для основной программы supermarket.c
. И я определил тип cashierT
и несколько других функций очереди. (queueADT getEmptyQueue(void);
- это mallo c «очереди» структуры данных, которую я создал, и выделение для нее места в памяти.) 2
/* queue.h*/
typedef struct cashier cashierT;
В основной программе supermarket.c
я инициализирую структуру кассира.
/* supermarket.c*/
cashierT initCashier(void){
cashierT x;
x.numberOfCustomersServed=0;
x.totalCustomerWaitingTime=0;
x.totalAmountReceived=0.0;
x.customerQ=getEmptyQueue();
return x;
};
Но затем я получаю некоторые ошибки: 3
/cygdrive/c/Users/Heta/Desktop/CLionHWQ2/supermarket.c:12:10: error: return type is an incomplete type
cashierT initCashier(void){
^~~~~~~~~~~
/cygdrive/c/Users/Heta/Desktop/CLionHWQ2/supermarket.c: In function 'initCashier':
/cygdrive/c/Users/Heta/Desktop/CLionHWQ2/supermarket.c:13:14: error: storage size of 'x' isn't known
cashierT x;
^
Но если я скопирую и вставлю целые struct cashier
в supermarket.c
, ошибка исчезнет. Ссылка 3 Ссылка 1 . Почему существует такая проблема и как я могу ее исправить, если я хочу сохранить struct cashier
и инициализацию в queue.c
?