造成LNK2005错误主要有以下几种情况:
1.重复定义全局变量。可能存在两种情况:
A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。
切记的就是不能给变量赋值否则还是会有LNK2005错误。
- (1)声明必须使用extern关键字
- (2)**不能给变量赋初值 **
下面的是声明:
extern int a;
下面的是定义
int a;
int a = 0;
extern int a =0;
2.头文件的包含重复。
往往需要包含的头文件中含有变量、函数、类的定义,在其它使用的地方又不得不多次包含之,如果头文件中没有相关的宏等防止重复链接的措施,那么就会产生LNK2005错误。解决办法是在需要包含的头文件中做类似的处理:
#ifndef MY_H_FILE //如果没有定义这个宏
#define MY_H_FILE //定义这个宏
……. //头文件主体内容
…….
#endif
上面是使用宏来做的,也可以使用预编译来做,在头文件中加入:
#pragma once
//头文件主体
LNK2005错误解析
本文详细解析了LNK2005错误的原因及解决办法,包括重复定义全局变量的问题及其正确声明方式,以及如何避免因头文件重复包含而导致的错误。
7567

被折叠的 条评论
为什么被折叠?



