初学者---文件包含可以完全运行,工程文件只可以编译,却链接出错,怎么回事?完全莫不清楚状况。
程序代码:
编程实现功能:求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);









