visual studio 编译C++ 出现LNK2005 :YY 已经在XX.obj中被定义的一种原因

当在Visual Studio中编译C++项目时遇到LNK2005错误,通常是因为变量或函数的重复定义。这可能源于头文件包含不当或缺少防止重复包含的保护。一种常见场景是main.cpp直接包含了xx.cpp,而项目中又有xx.cpp源文件,导致编译两次。解决方法是仅包含对应的头文件(yy.h),避免直接包含cpp文件。

visual studio 编译C++ 出现LNK2005 :YY 已经在XX.obj中被定义的一种原因

一般出现这种是重复定义了变量或函数。这种坑只需检查头文件和CPP文件,以及用#ifndef 或#pragma once就可解决,不再赘述。还有一种情况是这样的:
main.cpp里使用了

<include xx.cpp>

,xx.cpp里的申明放在yy.h里面并

<include yy.h>

,同时项目里面有xx.cpp,也会出现这样的错误。原因是项目里面xx.cpp会被编译,main.cpp再include一次,就造成重复。解决办法很简单,不要include xx.cpp,include yy.h 就行了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值