注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

GCC编译错误:重复包含头文件的问题  

2010-07-01 10:44:26|  分类: 编译错误 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


obj/Debug/src/ConfigInfo.o: In function `configlib::item_toggle_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/mnt/share/ConfigLib/configitem.h:181: multiple definition of `configlib::item_toggle_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
obj/Debug/main.o:/mnt/share/ConfigLib/configitem.h:181: first defined here
obj/Debug/src/ConfigInfo.o: In function `configlib::item_toggle_bool(bool&, bool)':
/mnt/share/ConfigLib/configitem.h:192: multiple definition of `configlib::item_toggle_bool(bool&, bool)'

 

VC中,防止重复包含的方法很简单,#pragma once 和#ifndef _***_H_的宏定义,就可以避免重复包含。或者在预编译头中加入头文件包含,也可以防止出现上面的问题。

 

参考:GCC 应用(一): 找出被.c 文件直接包含多次的头文件

http://sys.firnow.com/linux/x8002010n06m/11s9087439.html

 

http://blog.csdn.net/hzgdiyer/archive/2010/01/24/5252075.aspx

讲了很多,没看明白怎么弄的。。

 

GCC:预编译头文件的尝试

http://ah-fu.javaeye.com/blog/281554

 

1. 在相应的头文件上右击,设置.h为按.c或者.cpp方式编译

2. 设置工程编译属性为使用头文件,并设置头文件的名称。

参考:http://ah-fu.javaeye.com/blog/281554

 

问题依旧存在。检查发现,由于某个.h文件里面定义的两个非模板函数(常规函数),其实现体也在.h里面,导致上面的重复定义问题。

 

By:zhanyonhu

  评论这张
 
阅读(1345)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016