C++文件包含发生多重定义符号错误问题

//12.cpp#include<iostream>usingnamespacestd;voidmb(inta){cout<<a;}//11.cpp#include"12... //12.cpp #include<iostream>using namespace std; void mb(int a) {cout<<a; } //11.cpp #include"12.cpp" int main() {int a=12; mb(a); return 0; } 编译还成功,但生成发生?mb@@yaxh@z已经在11中定义,找到多个多重定义的符号,错在那里? 放在同一文件能运行成功…
在Vs2005运行我知道了,函数重新定义,那什么时候用文件包含呢?
展开
 我来答
aheroofeast
2012-08-06 · 超过17用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:41.7万
展开全部
//12.cpp

#include<iostream>
using namespace std;
void mb(int a) {cout<<a; }

//11.cpp
#include"12.cpp"
int main()
{
int a=12;
mb(a);
return 0;
}

和a的定义没关系。
你的mb函数在11中定义,在11.cpp中会编译一次;
你把11包含到22.cpp中,它会再编译一次,就会导致有两个mb函数的定义。

所以,你应该做的就是,把mb函数的声明,放在11.h文件中,11.cpp和22.cpp都包含11.h即可。

请搞清楚“声明”和“定义”的具体含义。
笃侠6A
2012-08-07 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3264万
展开全部
将12.cpp从当前项目中移出估计就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wudong901203
2012-08-06 · TA获得超过228个赞
知道答主
回答量:128
采纳率:0%
帮助的人:51.1万
展开全部
变量a被定义了两次,文件包含最好做出头文件,在头文件中做相关声明即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式