前言:今天在写代码过程中遇到了multiple definition of `***'这样的报错,整了一下午,终于找到了原因,记录一下
产生这个错误的原因是重复定义
//假设该文件为test.h
//声明一个结构体test
struct Test
{
int num;
}
//在.h文件中定义
Test test;
此时在a.c文件和b.c文件中均调用该结构体,此时编译就会出现multiple definition of ‘Test’的报错
产生原因
因为在两个文件中都要引用test.h,进而会定义两次这个结构体,所以这样的写法是错误的
解决方法
方法一:在定义时加上一下代码
#ifndef TEST_H
#define TEST_H
...
#endif
方法二:在其中一个.c文件中定义,在.h文件中用extern该变量