multiply defined
多重定义,就是一个变量被定义了两次,或者定义一次被编译器编译了两次。
如下图所示的,有多个被重复定义的。。。。。
遇见是真他娘的难受
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9489fc52c07ede3296cfb4c90a9a3257.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a4707cd3ca291fe760b8069ed636acb2.png)
解决办法
自己写变量定义时
这种问题一般是变量定义问题,解决办法
1、变量定义在.c文件中。如果是结构体的话,结构体要在.h文件,结构体变量在.c文件中。
2、在.h文件中进行extern声明
3、其他文件include的时候只导入.h,不要include “*.c”
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fd4c2e2f5e731eaf5c9071b7497a9ee3.png)
使用别人代码或者SDK时
这才是TM的痛苦的,有时候不知道改了哪里,突然蹦出来这种情况。
很大情况下是多次导入了某个头文件,看下图中圈出来的右边,在这些文件中
找找问题。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4593f78cf6690135b618b49d69a65ff7.png)
遇见过最恶心的情况
在进行项目使用的SDK从低版本生的稍微高点的时候,准备将新功能也添加进去。
但是出现了一个戏剧性:
就是有个关键文件,在低版本和高版本中都起到关键作用,但是两个在其他版
本冲突,TM的最后,直接将两个比对一下,将高版本部分替换到低版本中,TM的竟然好了。。。。。。。。。。。。。。。。。
具体就是将nrfx的15版本sdk将某些文件抽出来的时候,好像是ble_glue.h文件在作怪
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9f58378ca1c55562b7df56ade46c7915.png)