c++ 错误问题,哪位高手给解释下

来源:百度知道 编辑:UC知道 时间:2024/05/18 12:53:38
1.3文件

# include <iomanip.h>
# include "abc.cpp"
void main ()
{
double a,b,c;
double averageValue;
a=2;b=3;c=4;

averageValue=AVE(a,b,c);
cout<<"averageValue:"<<averageValue<<endl;
averageValue=AVE(a,b+1,c+2);
cout<<"averageValue:"<<averageValue<<endl;
}

abc.cpp文件

double AVE(double x ,double y,double z)
{
return (x+y+z)/3;
}

--------------------Configuration: 1.3 - Win32 Debug--------------------
Linking...
abc.obj : error LNK2005: "double __cdecl AVE(double,double,double)" (?AVE@@YANNNN@Z) already defined in 1.3.obj
Debug/1.3.exe : fatal error LNK1169: one or more multiply defined symbols found
执行 link.exe 时出错.

1.3.exe - 1 error(s), 0 warning(s)

你是想练一练头文件上的使用对吧
作为头文件的话只能用.h作为文件名
你用cpp时打不开头文件的,甚至他根本不能叫做头文件

也就是你在建立工程时,要先建立一个头文件,并且以abc.h为文件名
你的工具应该是vc吧
那么你就通过“文件”-“新建”-工程-选择-win32 c a工程
文件-新建-文件-选择-c/c++ source文件 -键入你的文件名
输入你的代码
然后通过“文件”-“新建”-文件-选择c/c++header file-键入abc
# include <iomanip.h>
# include "abc.h"
void main ()
{
double a,b,c;
double averageValue;
a=2;b=3;c=4;

averageValue=AVE(a,b,c);
cout<<"averageValue:"<<averageValue<<endl;
averageValue=AVE(a,b+1,c+2);
cout<<"averageValue:"<<averageValue<<endl;
}
但是你的原代码要改为以上那样(将头文件的后缀改为.h另外最好有双引号),头文件,不用改!
回复jyfjyt :你把我惹火了,后果很严重!!!!!!!!
账号为"jyfjyt"的朋友。我的代码是我已经试过的。如果按照我的步骤是不会出错的,因为在这里我是把头文件建在了我先前所建的工程里,所以只能用“”将头文件括起来,而不能用<>(尖括号);知道尖括号与双引号的区别吗?尖括号表示系统会直接到系统所制定的路径去寻找include文件,而双引号是现在当前路径中寻找include文件,找不到再到系统指定的路径下寻找.
我来一步一步跟你说说:
1、“文件”-“新建”-工程-选择-win32