Im trying to link a few files in c and im getting this erorr: \"multiple definition of createStudentList\"
my main.c:
#include \"students.h\"
int mai
Remove #include "students.c"
from students.h. Because of this the definition is occuring twice - one from students.h and another from students.c - hence the clash.
Just remove the above mentioned line and also add #include <stdbool.h>
in your students.h. Do these modifications and your code will compile and link fine.
Due to the includes, you have the function createStudentList()
defined in both main.o and student.o, which leads to the linker error you observe.
I would suggest to do the following. The structure (type) definition and function prototype should go into the header file:
#ifndef _students_h_
#define _students_h_
#include <stdbool.h>
typedef struct Students
{
int id;
double average;
} Student;
bool createStudentList(void);
#endif
and the actual code in the sourcefile, which includes the headerfile
#include "students.h"
bool createStudentList(void)
{
return true;
}
Now you can use both the type and the function createStudentList
in other source files by including students.h
.