当前位置:编程学习 > C/C++ >>

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语言问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,