#c #gcc #struct #types
#c #gcc #структура #типы
Вопрос:
Я пишу программу для какой-то задачи, у меня есть этот заголовочный файл под названием course.h, где я написал эту структуру:
typedef struct Course{
int numCourse;
char nameofCourse[MAX_NAME_OF_COURSE];
int maxStudents;
int currentStudents;
Grades studentsGrades[MAX_COURSES];
}Course;
после этого,
Я написал функцию, которая возвращает c1 из типа Course:
Course getNewCourse(){
Course c1;
int i, num=0;
int st_now=0; /*for currently student in the course*/
char temp1[MAX_NAME_OF_COURSE]; /*for course name*/
char temp2[FIVE]; /*for student id*/
temp1[0] = ''; /*clean the string befor use it*/
temp2[0] = '';
printf("Please enter the course number (FIVE digits):n"); /*add the course number*/
clear_buffer();
while(scanf("%d", amp;num)){
if(cheakIfNumCourseIsProper(num)==1){
c1.numCourse = num;
break;
}
printf("Error! Please try again:n");
}
printf("Please enter the course name (FIVE digits):n"); /*add the course name*/
clear_buffer();
while(scanf("%s", temp1)){
if(checkNameCourse(temp1)==1){
strcpy(c1.nameofCourse,temp1);
break;
}
printf("Error! Please try again:n");
}
printf("Please enter maximum of students in the course: (between ZERO-MAX_COURSES):n"); /*max students*/
clear_buffer();
num=0;
while(scanf("%d", amp;num)){
if(checkMaxNumofCoursesYear(num)==1){
c1.maxStudents = num;
break;
}
printf("Error! Please try again:n");
}
printf("Please enter the number of students currently in the course: (between ZERO-THOUSAND):n"); /*students in course*/
clear_buffer();
while(scanf("%d", amp;st_now)){
if(checkNumStudentInCourse(st_now)==1){
c1.currentStudents = st_now;
break;
}
printf("Error! Please try again:n");
}
printf("Please write student id and his grades:n"); /*students grades array*/
clear_buffer();
for(i=0;i<st_now;i )
{
c1.studentsGrades[i].id_test=getStudentId();
c1.studentsGrades[i].examA=getGradeExam();
c1.studentsGrades[i].examB=getGradeExam();
}
return c1;
}
Как вы видите, функция возвращает c1.
(Функция находится в разделе «inputs.c», и я включил «course.h» ofc)
но компилятор gcc выдает мне эту ошибку:
входные данные.h: 13:1: ошибка: неизвестное имя типа ‘Course’; вы имели в виду ‘double’? Конечно, getNewCourse(); ^~~~~~
Что не так с моим кодом?
ОТРЕДАКТИРОВАНО: это входные данные.заголовок h:
#ifndef INPUTS_H_
#define INPUTS_H_
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include "course.h"
#include "student.h"
#include "common.h"
#include "checks.h"
/*inputs courses:*/
int getNumofMaxCourses();
Course getNewCourse();
char * getCouseNum();
double getCoursetoAdd();
int getCoursetoDelete();
/*inputs students:*/
int getGradeExam();
int getMaxNumberOfStudets();
Student getNewStudent();
char* getStudentTodelete();
char * getStudentId();
/*inputs common:*/
int getCourseNum();
char* getCourseName();
#endif
Комментарии:
1. Какой файл содержит определение
Course
? Это предшествует объявлениюgetNewCourse()
?2. структура находится под заголовком «course.h», который я включил ПЕРВЫМ в заголовок «inputs.h», где сначала объявляется getnewCourse();
3. Выдает ли gcc другие предупреждения или ошибки перед сообщением об ошибке, которое вы нам показываете?
4. Как вы компилируете свой код? Если это происходит через командную строку, вам нужно добавить
course.h
в список аргументов, чтобы gcc мог это увидеть. Включение C не работает так, как импорт на других языках.