当前位置:  编程技术>c/c++/嵌入式

解决C++中重定义的方法总结

    来源: 互联网  发布时间:2014-10-14

    本文导语:  C++由于头文件重复包含了所定义的变量或者常量,编译器就会报重复定义的错误。如果你碰见这样的问题可以考虑重下面几个方面去解决: 1、在出现重定义错误的头文件加上:#ifndef FileName_H_#define FileName_H_ ....(头文件内容)#endi...

C++由于头文件重复包含了所定义的变量或者常量,编译器就会报重复定义的错误。如果你碰见这样的问题可以考虑重下面几个方面去解决:

1、在出现重定义错误的头文件加上:
#ifndef FileName_H_
#define FileName_H_
....(头文件内容)
#endif
注意如果FileName_H_这个名字已经被使用,将会出现未定义问题(这里不讨论),这是你保证FileName_H_唯一就可以。

2、在出现重定义错误的头文件加上这一句:#pragma once 就可以解决(VS建立的类都会默认添加这一行),方式2与1其实是一样的,二选一即可(个人推荐使用方式1)
采用方式1或方式2基本上可以解决95%以上的重复定义的问题。在开发过程中,经常会使用第三方的API,单独使用某一个API都正常,但是同时使用多个API的时候就会出现某些结构体重复定义的问题,此时可以按照下面几种方式处理:

3、将重复定义的struct、变量名、常量,提出到一个公共的.h文件中,然后将原文件中公共部分的struct、变量名、常量屏蔽或删除,同时在头文件中包含公共的.h文件。

4、如果三防库中,出现C风格、C++风格两种不同的struct定义方式,就不能按照3的方式解决了(方式3解决后编译正常,但是会出现链接问题,分析lib中的导出函数中参数与C风格参数差异)。此时只需要将C风格方式的struct修改为C++风格的struct,同时更新API头文件中对应使用C风格struct位置。


    
 
 

您可能感兴趣的文章:

  • Linux 下c++开发error while loading shared libraries问题解决
  • 64位linux下编译C++出错问题,求解决
  • Windows C/ C++堆相关问题及解决思路
  • c++ 一个二进制串转化为整数的解决方法
  • linux下编写c++陷入死循环如何解决
  • 解决C++中事件不响应的方法详解
  • 深入C++浮点数无效值定义与判定的解决办法
  • C++ socket 变成遇到无法解决的tcp 分片问题
  • 解决C++ 无法从void 转换为LRESULT的方法详解
  • C++中用substr()函数消除前后空格的解决方法详解
  • 达人进来解决一下C++中CTime类中出现的一些问题 急急急
  • C++实现两个日期间差多少天的解决方法
  • c++ mk文件出错Jni调用产生java.lang.UnsatisfiedLinkError错误解决方法
  • C++操作MySQL大量数据插入效率低下的解决方法
  • C++ 如何用cout输出hex,oct,dec的解决方法
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错(解决马上给分啊!谢谢)
  • 用C++实现单向循环链表的解决方法
  • linux下的g++编译c++问题,请高手解决
  • 上次问题解决了,原来是extern被重定义了。。。天阿,关键字也可以被重定义。。。。。欢迎接分
  • 解决自定义$(id)的方法与jquery选择器$冲突的问题
  • 做一个小工程报重复定义错误怎么解决啊?
  • 最近看apue,程序4-10中,编译时,使用两个宏major和minor来访问主次设备号,没有定义是怎么回事,应该怎么解决呢?
  • 2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
  • 解决C# winForm自定义鼠标样式的两种实现方法详解
  • asp.net自定义控件中注册Javascript问题解决方案
  • 快速解决commons-fileupload组件无法处理自定义head信息的bug
  • c/c++/嵌入式 iis7站长之家
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重装MySQL最后一步失败的完美解决方案(经验总结)
  • C#中将字符串转换为整型的三种解决方法总结
  • 关于JAVAMAIL收邮件的中文乱码问题的解决方案!!!总结CSDN的几种方法。有问题,请入内解决啊!!!
  • 指定网页的doctype解决CSS Hacking方法总结
  • 我的总结,RedHat linux9.0新手遇到的问题,大家过来帮忙解决,好多问题,也许你会其中的几个。
  • 布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
  • sqlserver数据库大型应用解决方案经验总结
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 解决 select 挡住div的解决方法
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • 求数据库解决方案===求数据库解决方案
  • windows server2008上PowerBuilder程序系统错误解决方法
  • MYSQL安装时解决要输入current root password的解决方法
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • 解决oracle用户连接失败的解决方法
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3