1. C++编译报错`XXX’被多次定义总结
报错原因:
诸如类似的报错都是因为可能在两个或者多个.cpp文件/.h文件定义该全局变量,属于重复定义问题
解决办法是:
在VScode全局搜索该变量,只能有一处是正常全部变量定义,其他的都定义成extern外部变量。
不要把全局方法的定义放在头文件里!!!!
去每一个文件里改掉重新编译就好
其他
可以把所有的全局变量放入一个头文件 global.h (名字随意起,但要加条件编译)中,每一个变量前面加extern,声明一下这些变量将在其它文件中定义。 然后建立一个和头文件名字对应的.c / .cpp文件 如global.c。在里面声明所有的全局变量。
2. 对‘xxx’未定义的引用
原因:
出现这种情况的原因,主要是C/C++编译为obj文件的时候并不需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要具体的实现了。如果错误是未声明的引用,那就是找不到函数的原型,解决办法这里就不细致说了,通常是相关的头文件未包含。
解决办法是:
在CMakeLists.txt的add_executable()中添加相应的.cpp文件,如: