描述:
mutiple definition of,顾名思义,是遇到了符号重复定义的问题,这个问题会在链接阶段出现:
- 如果符号是 变量,则会导致链接失败;
- 如果符号是函数,则在Windows下会warning提示然后使用第一个出现的符号,如果是在Linux下,会链接失败。
快速排查:
确定是不是有 #include xxx.c 这种包含 源文件的语法
因为全局变量和函数实现正常情况下都是在源文件中定义的,如果使用 #include 来包含,一定会造成符号重复的情况。解决方法就是不要使用 #include xxx.c 这种语法。
确定头文件是否有防重复包含语句
头文件要如下代码保护
#ifndef XXX
#define XXX
...
#endif
这可以防止头文件的重复包含。