在c程序中出现LNK2005错误

时间:2018-01-25 23:21:35

标签: c

当我尝试运行该程序时,visual studio显示错误LNK2005LNK1169

我创建了两个源文件,并在主文件中使用#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);

}

enter image description here

1 个答案:

答案 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,并在#include1.5.3.cpp文件中Print.cpp。< / p>

您可能希望看到: What is the difference between a definition and a declaration?