| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:初学者---文件包含可以完全运行,工程文件只可以编译,却链接出错,怎么回事 ...
取消只看楼主 加入收藏
cquwt
Rank: 1
等 级:新手上路
帖 子:41
专家分:2
注 册:2013-12-24
结帖率:69.23%
收藏
已结贴  问题点数:5 回复次数:0 
初学者---文件包含可以完全运行,工程文件只可以编译,却链接出错,怎么回事?完全莫不清楚状况。
程序代码:
编程实现功能:求2个数的最大公约数和最小公倍数。要求用函数实现,并且将主函数和这两个函数分别存入3个文件a.cpp,b.cpp,c.cpp中,并且将b.cpp和c.cpp两个文件中函数的声明编写一个名为bc.h的头文件,在主函数中将bc.h包含进来,然后分别用文件包含和工程文件两种方法实现多文件的编译链接。         
我第一种方法(文件包含)可以运行出来,可是第二种方法(工程文件)可以编译,不可以连接是怎么回事?
总显示这个:
Linking...
b.obj : error LNK2005: "long __cdecl b(long,long)" (?b@@YAJJJ@Z) already defined in a.obj
c.obj : error LNK2005: "long __cdecl b(long,long)" (?b@@YAJJJ@Z) already defined in a.obj
c.obj : error LNK2005: "long __cdecl c(long,long)" (?c@@YAJJJ@Z) already defined in a.obj
  abjhhh.exe : fatal error LNK1169: one or more multiply defined symbols found
    【a.cpp】
#include <stdio.h>
#include "b.cpp"
#include "c.cpp"
#include "bc.h"
void main()
{

 long a,h,m;

 printf("please input a,h:  ");

 scanf("%d,%d",&a,&h);
  if(a<h)
  { 
         m=a;a=h;h=m;    //a是较大值,h是较小值
  }
  printf("\n***********************************\n");
  printf("\n%d和%d的最大公约数是%d\n",a,h,b(a,h));
  printf("%d和%d的最小公倍数是%d\n",a,h,c(a,h));
}

    【b.cpp】
long b(long x,long y)
{
   long k,n,r;
   k=x;  n=y;     //k是较大值,n是较小值
   while(n!=0)
   {
       r=k%n;
       k=n;
       n=r;
   }
   return k;
}

    【c.cpp】
long c(long x,long y)
{
  long k,n,l;
  k=x; n=y;
  l=k*n/b(k,n);
  return l;
}
    【bc.h】
long b(long x,long y);
long c(long x,long y);
搜索更多相关主题的帖子: 最小公倍数 公约数 工程 
2014-05-09 23:47
快速回复:初学者---文件包含可以完全运行,工程文件只可以编译,却链接出错,怎 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023822 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved