c++ 头文件重定易做图决心得
最近在做开发的时候用到很多自己编写的头文件,这样很容易出现 error LNK2005,经过查阅资料,发现网上很多资料都是转载同一个地方的,而当时阅读时一些不明白的地方费了一番周折,不过最终把问题解决了。
网上也有很多五花八门的解决方案,这里总结一种可行的。开发环境为 VS 2008。
首先,尽量保证在头文件中只声明变量和函数,不要定义。这个很重要,不然链接时候会出现麻烦。不仅是变量不定义,函数也不要出现定义,但可以出现声明。
其次,如果以上问题解决后,还有 error LNK2005,那就在每个头文件中作如下修改:
1、在头文件的开头加入
#ifndef _HEAD_H_ //如果没有定义这个宏
#define _HEAD_H_ //定义这个宏
2、在头文件末尾加入
#endif
这样加入之后的头文件内容为:
#ifndef _HEAD_H_ //如果没有定义这个宏
#define _HEAD_H_ //定义这个宏
。。。。。//此处为头文件原来的内容
#endif
说明:加入上述信息的目的是告诉链接程序,该头文件只能被链接一次,这样就可以避免重定义问题。对于宏名字,(此处为 _HEAD_H_)选取的问题,要保证所有头文件中的名字不同,不然链接程序定义具有相同名字的某个头文件之后,所有含有相同宏名字的头文件都不会再被链接。通常的一个命名方法是,把头文件名全部大写,然后前后加上 _ ,再用 _ 替换 . ,如头文件为 title.h,则命名为: _TITIE_H_
经过这两步,基本error LNK 2005 就解决了。
仅供初学者参考,如有问题请留言。
补充:软件开发 , C++ ,