C++ 找到一个或多个重定义符号

C++ 找到一个或多个重定义符号

问题:多个源文件包含了同一个头文件时,如果头文件中有某个局部变量或者非内联函数的定义,那么相当于每个源文件都把该局部变量或者非内联函数定义了一次。而它们(局部变量或者非内联函数)在这种情况下默认又是全局的,那么会导致重定义错误。

我们应当避免在头文件中定义局部变量或者非内联函数。而由于编译器会将类,内联函数以及const变量默认视为定义它们的源文件所私有,因此它们(类,内联函数以及const变量)可以定义在头文件中。

解决方法:

bash 复制代码
把实现放到cpp文件中去。
内联添加inline关键字
如果是变量的话,可以在头文件使用extern int XXX,然后在某个cpp中不加extern定义。

参考:
https://zhuanlan.zhihu.com/p/141833130

相关推荐
2501_947575808 小时前
计算机毕业设计之jsp开山车行二手车交易系统
java·开发语言·hadoop·python·信息可视化·django·课程设计
骑士雄师8 小时前
java面试题 4:鉴权
java·开发语言
时间的拾荒人9 小时前
C语言字符函数与字符串函数完全指南
c语言·开发语言
浆果02079 小时前
NanoTrack C++ — RK3588 实时目标跟踪
c++·目标跟踪·rk3588
ysa0510309 小时前
【并查集】判环
c++·笔记·算法
2501_948106919 小时前
计算机毕业设计之基于jsp教科研信息共享系统
java·开发语言·信息可视化·spark·课程设计
持力行9 小时前
C/C++ 中的 char*:它标识数组吗?为什么能用下标访问?
c语言·c++
取经蜗牛10 小时前
Python 第一阶段完全指南:从零到第一个实用工具
开发语言·python
dog25010 小时前
从重尾到截断流量模型的演进
开发语言·php
qq_4017004110 小时前
Qt QSS 完全入门写出漂亮界面以及解决样式不生效问题
开发语言·qt