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

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

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

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

解决方法:

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

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

相关推荐
无限进步_几秒前
【C++】电话号码的字母组合:从有限处理到通用解法
开发语言·c++·ide·windows·git·github·visual studio
JJay.15 分钟前
Android Kotlin 协程使用指南
android·开发语言·kotlin
csbysj202021 分钟前
jQuery 捕获详解
开发语言
C++ 老炮儿的技术栈29 分钟前
GCC编译时无法向/tmp 目录写入临时汇编文件,因为设备空间不足,解决
linux·运维·开发语言·汇编·c++·git·qt
橘颂TA36 分钟前
【笔试】算法的暴力美学——牛客 NC213140 :除2!
c++·算法·结构与算法
三道渊1 小时前
进程通信与网络协议
开发语言·数据库·php
白露与泡影1 小时前
Java面试题库及答案解析(2026版)
java·开发语言·面试
wsoz1 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
favour_you___1 小时前
2026_4_8算法练习题
数据结构·c++·算法
疯狂成瘾者1 小时前
Chroma向量数据库
开发语言·数据库·c#