c++ 找到一个或多个多重定义的符号 不同情况的解决方法

本文介绍了C++编程中遇到的函数重名、头文件包含错误及伪菱形包含问题的解决策略。建议使用命名空间避免函数重名,通过#pragma once或include guards防止头文件重复包含,并解释了伪菱形包含的特殊情况及其解决方案,如将函数实现移至单独的cpp文件或封装为类的静态方法。
摘要由CSDN通过智能技术生成

不同文件函数重名

改掉就好,一般别人封装好的api都会放在一个namespace里面,自己写的也可以参考这种做法

头文件没跟编译器说明白

添加#pragma once 或者
#ifndef xxx
#define xx
[code]
#endif

伪菱形包含

两个实现文件包含了同一个头文件,这两个又同时被另外一个文件包含
有如下文件1.h,2.h,3.h,my.cpp,2.cpp
2.cpp和3.h都包含了1.h
my.cpp包含了2.h和3.h
2.cpp包含了2.h
这种情况直接用#ifndef是没用的
如果是2.h和3.h包含了1.h是没问题的,
但是!!!如果是2.cpp包含了2.h,并且1.h是被2.cpp而不是2.h包含,就会出错
解决方案如下:
1.把在1.h实现的函数,用1.cpp实现,1.h只声明,不实现
2.如果不想再搞个1.cpp,可以把1.h里面的函数封装到类里面作为静态方法,封装到namespace也没有用

other

如果还有其他情况,上面三个方法无法解决欢迎分享

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值