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

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

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

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

解决方法:

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

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

相关推荐
ZEERO~5 分钟前
@dataclass的作用
开发语言·windows·python
南行*12 分钟前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
Morwit15 分钟前
Qt qml创建c++类的单例对象
开发语言·c++·qt
June`15 分钟前
IO模型全解析:从阻塞到异步(高并发的reactor模型)
linux·服务器·网络·c++
古城小栈17 分钟前
Rust 已经自举,却仍需GNU与MSVC工具链的缘由
开发语言·rust
YxVoyager21 分钟前
Qt C++ :QRegularExpression 正则表达式使用详解
c++·qt·正则表达式
jarreyer22 分钟前
数据项目分析标准化流程
开发语言·python·机器学习
闻缺陷则喜何志丹22 分钟前
【回文 字符串】3677 统计二进制回文数字的数目|2223
c++·算法·字符串·力扣·回文
李余博睿(新疆)24 分钟前
c++分治算法
c++
你怎么知道我是队长25 分钟前
C语言---printf函数使用详细说明
c语言·开发语言