当我尝试运行该程序时,visual studio显示错误LNK2005
和LNK1169
。
我创建了两个源文件,并在主文件中使用#include
。有人能告诉我为什么这是错的
这是我在1.5.3.cpp中的代码
#include "stdafx.h"
#include "Print.cpp"
int main()
{
double b;
printf("Input a number\n");
scanf_s("%lf\n", &b);
print(b);//call print()
return 0;
}
这是我在Print.cpp中的代码
#include "stdafx.h"
void print(double a)
{
double c = a * 2;
printf("%lf multyply by 2 is %lf", a, c);
}
答案 0 :(得分:0)
这是你的问题:
#include "Print.cpp"
在void print(double a)
文件 AND Print.cpp
文件中定义函数1.5.3.cpp
。编译1.5.3.cpp
文件时,它会在1.5.3.obj文件中生成符号void print(double a)
。同样,在编译Print.cpp
文件时,它还会在Print.obj文件中生成符号void print(double a)
。因此链接器错误:
LNK2005 “void __cdecl print(double)”(?print @@ YAXN @ Z)已在1.5.3.obj中定义 LNK1169 找到一个或多个多重定义的符号
您需要在void print(double a)
文件中声明 Print.h
,并在#include
和1.5.3.cpp
文件中Print.cpp
。< / p>
您可能希望看到: What is the difference between a definition and a declaration?