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

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

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

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

解决方法:

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

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

相关推荐
高彬10 分钟前
SAP ECC6.0 对接 C# web Services服务
开发语言·前端·c#·sap
张小姐的猫15 分钟前
【C++开发脚手架】 —— Jsoncpp上手
java·linux·开发语言·网络·c++·tcp/ip·udp
一晌小贪欢16 分钟前
python-第20天:关键字参数与不定长参数
java·开发语言·前端·python·数据可视化·函数参数·python办公
小灰灰搞电子17 分钟前
Rust+Slint 实现蜂巢菜单源码分享
开发语言·rust·蜂巢菜单.
我命由我1234518 分钟前
JS Mock(Mock 拦截请求的前提、Mock 使用、关闭 Mock)
开发语言·前端·javascript·前端框架·html·html5·js
OPEN-F25 分钟前
C++并发编程:异步任务与线程池实战
开发语言·c++·算法
心中有你021443 分钟前
Python爬虫实战:京东商品数据爬取+可视化分析
开发语言·爬虫·python
水饺编程2 小时前
第5章,[Win32 章节] :练习程序,BigFontPic
c语言·c++·windows·visual studio
不正经学生6 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技6 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php