问题:
error LNK2005: “int __cdecl limit(void)” (?limit@@YAHXZ) 已经在 limits.obj 中定义
D:\CppProjects\learn_cplus\x64\Debug\Project1.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
我的源文件中有两个C++文件,在源文件source.cpp中使用include包含另一个文件后报错,包含的格式为:#include “limits.cpp”
出错原因:因为source.cpp文件包含了limits.cpp文件,在vs2019的编译边境下,limit函数在limit.cpp文件中编译了一次,又在source.cpp文件中编译了一次。在第二次编译时,因为已经存在同名函数,所以报错。
参考链接:link
解决方法:在C++的新特性中,C++文件的文件命名约定为加上前缀c,不用扩展名。
因此修改包含的方式为
#include <iostream>
#include "climits"
通过编译。
但是操作中发现,想要调用limits.cpp中的函数,并不能直接include limits.cpp,而是需要创建相应的头文件limits.h,并在头文件中声明函数,然后include “limits.h”(此时与C语言的命名方式一致),即可调用函数。