您的位置:首页 > 编程语言 > C语言/C++

C++ error:LNK2005 已经在*.obj中定义

2016-06-07 23:01 441 查看
一般在编程有多个CPP及头文件时有可能出现以下错误:

error LNK2005: "void __cdecl test2(void)" (?test2@@YAXXZ) 已经在 源2.obj 中定义

fatal error LNK1169: 找到一个或多个多重定义的符号

问题在于没有把握清楚头文件的作用以及CPP之间函数与变量命名方式的规则:

头文件的内容:

★ 类型(struct-第7章)及类(class-第8章)的声明

★ 函数的声明

★ inline函数的定义与实现

★ 符号常量的定义及常变量的定义

★ 全局变量的extern声明

★ 其它需要的头文件

cpp之间的全局变量不能同名,所以不能在头文件中定义一个变量后在两个cpp中都包含头文件,否则会报上述错误。解决方法是加const 限定,另外不同cpp之间的函数必须要有区分(函数名,参数类型)否则也会报错。要调用cpp之间变量或函数必须加申明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: