c语言工程问题 到底出了什么问题啊? 怎么解决?
1.cpp\\
#include <stdio.h>
#include"2.cpp"
#include"3.cpp"
#include"4.cpp"
main()
{
double a[10];
a1(a);
b(a);
c(a);
}
2.cpp\\
#include <stdio.h>
void a1(double b[])
{int i;
for(i=0;i<10;i++)
scanf("%lf",b[i]);
}
3.cpp\\
#include <stdio.h>
void b (double c[])
{int i,j;
double t;
for(i=0;i<10;i++)
for(j=0;j<10-i;j++)
if(c[j]>c[j+1])
{t=c[j+1];c[j+1]=c[j];c[j]=t;}
}
4.cpp\\
#include <stdio.h>
void c(double d[])
{
int i;
for(i=0;i<10;i++)
scanf("%lf",d[i]);
}
错误提示
2.obj : error LNK2005: "void __cdecl a1(double * const)" (?a1@@YAXQAN@Z) already defined in 1.obj
3.obj : error LNK2005: "void __cdecl b(double * const)" (?b@@YAXQAN@Z) already defined in 1.obj
4.obj : error LNK2005: "void __cdecl c(double * const)" (?c@@YAXQAN@Z) already defined in 1.obj
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
1.exe - 1 error(s), 0 warning(s)
追问:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
出现了这个问题?
请问是怎么回事啊?请问怎么定义,声明啊?
答案:把
#include"2.cpp"
#include"3.cpp"
#include"4.cpp"
换成
extern void a1(double b[]);
extern void b(double c[]);
extern void c(double d[]);
就能编译通过了
因为你 include 的是cpp文件,函数会被重复定义
一般include的都应该是.h 文件
正规的写法应该是
//1.cpp
#include <stdio.h>
#include"2.h"
...
//2.h
void a1 (double c[]);
//2.cpp
#include <stdio.h>
#include "2.h"
void a1(double b[])
{int i;
for(i=0;i<10;i++)
scanf("%lf",b[i]);
}
其他:不可以用include *.cpp 文件,至少不建议。
你先定义cpp
然后在main中直接重新声明下就行了
上一个:C语言 \\t 什么意思
下一个:c语言问题