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 main(void)
{
return 0;
}
students.h:
#ifndef _students_h_
#define _students_h_
#include "students.c"
bool createStudentList();
#endif
students.c:
#include <stdbool.h>
typedef struct Students
{
int id;
double average;
} Student;
bool createStudentList()
{
return true;
}
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:
and the actual code in the sourcefile, which includes the headerfile
Now you can use both the type and the function
createStudentListin other source files by includingstudents.h.