Я получаю ошибку своего компилятора/компоновщика в моем коде, скорее всего, связан с препроцессором. сообщение об ошибке читает «несколько определений x», где x - любая из 4-х функций в файле lib.c. компилятор/компоновщик, который я использую, является компилятором GNU GCC, упакованным с кодом: blocksНесколько определений ... (ошибка компоновщика?)
Я попытался изменить порядок #includes, чтобы не было успеха, и что заставляет меня полагать, что это ошибка компоновщика, а не ошибка компилятора заключается в том, что если я сделаю преднамеренную синтаксическую ошибку, компилятор обнаружит это и прервется, не указывая сообщение об ошибке.
вся помощь/совет/критика оценены, спасибо заранее!
здесь файл main.c:
#include <stdlib.h>
#include "lib.c"
int main()
{
getGradeAverage();
return EXIT_SUCCESS;
}
и lib.c:
#include "defs.h"
void getUserName()
{
printf ("please enter the your name:");
studentRecord sr;
scanf("%40[^\n]%*c",&sr.studentName);
}
void getCourse (index)
{
printf("please enter the name of course 1:");
courseRecord cr1;
scanf("%40[^\n]%*c",&cr1.courseName);
do{
printf("please enter a grade for course 1:");
if ((scanf("%i",&cr1.grade))>-2)
{
printf("the grade you entered is not on the scale. please try again:");
fflush(stdin);
continue;
}
} while(true);
printf("please enter the name of course 2:");
courseRecord cr2;
scanf("%40[^\n]%*c",&cr2.courseName);
do{
printf("please enter a grade for course 1:");
if ((scanf("%i",&cr2.grade))>-2)
{
printf("the grade you entered is not on the scale. please try again:");
fflush(stdin);
continue;
}
} while(true);
}
void GPAPrint()
{
int GPA;
studentRecord sr;
courseRecord cr1;
courseRecord cr2;
printf("Student name: %s\n",&sr.studentName);
}
void getGradeAverage()
{
int index=1;
getUserName();
getCourse(index);
GPAPrint();
return (0);
}
файл defs.h также актуален здесь, так как это содержит большинство директив #includes и структур.
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <string.h>
#define MAX_LENGTH 40
typedef struct courseRecord
{
char courseName [MAX_LENGTH+1];
int grade;
}courseRecord;
typedef struct studentRecord
{
char studentName [MAX_LENGTH+1];
char courseName[2];
}studentRecord;
А что такое «какая-то ошибка компилятора/компоновщика в моем коде»? BTW Вы должны были поставить прототипы функций для 4 функций в файле заголовка. –
Я указал ниже, сообщение об ошибке «несколько определений ...», или вы имеете в виду что-то еще? – Thefoilist
«Х». Что такое 'x'. –