在 C( 的多重定义..)中链接文件



我试图在 c 中链接一些文件,我得到这个 erorr: "创建学生列表的多重定义">

我的主线:

#include "students.h" 
int main(void) 
{  
return 0;
}

学生.h:

#ifndef _students_h_
#define _students_h_
#include "students.c" 
bool createStudentList();
#endif

学生网:

#include <stdbool.h>
typedef struct Students
{
int id;
double average;
} Student;
bool createStudentList()
{
return true; 
}

由于包含,您在main.ostudent.o中都定义了函数createStudentList(),这会导致您观察到的链接器错误。

我建议做以下几点。结构(类型)定义和函数原型应放入头文件中:

#ifndef _students_h_
#define _students_h_
#include <stdbool.h>
typedef struct Students
{
int id;
double average;
} Student;

bool createStudentList(void);
#endif

以及源文件中的实际代码,其中包括头文件

#include "students.h"
bool createStudentList(void)
{
return true; 
}

现在,您可以通过包含students.h来同时使用其他源文件中的类型和函数createStudentList

从学生中删除#include "students.c".h.正因为如此,定义出现了两次 - 一次来自学生.h,另一次来自学生.c - 因此发生了冲突。

只需删除上述行,并在您的学生中添加#include <stdbool.h>.h。进行这些修改,您的代码将编译和链接正常。

相关内容

  • 没有找到相关文章

最新更新