首页
博客
专栏课程
下载
问答
社区
会员中心
论坛
代码
直播
Chrome 插件
能力认证
导航
全部
博文收录
Ada助手
问答
...
博文收录
Ada助手
问答
登录/注册
社区
C++ 语言
帖子详情
两个头文件重复定义了一个名字,怎么办
prhanxben
2011-03-22 07:30:24
因为用到不同的库的头文件,但这两个文件里定义了相同的名字:
typedef xxxxx Typename;
这个Typename又是很多地方必须用到的。不可能在使用的地方一一加上namespace
请问有什么办法能同时使用这两个 typedef么?
...全文
给本帖投票
1156
10
打赏
收藏
两个头文件重复定义了一个名字,怎么办
因为用到不同的库的头文件,但这两个文件里定义了相同的名字: typedef xxxxxTypename; 这个Typename又是很多地方必须用到的。不可能在使用的地方一一加上namespace 请问有什么办法能同时使用这两个 typedef么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
发表回复
按下Enter换行,Ctrl+Enter发表内容
编辑
预览
轻敲空格完成输入
显示为
卡片
标题
链接
打赏红包
prhanxben
2011-03-22
打赏
举报
回复
[Quote=引用 5 楼 qq120848369 的回复:]
给你的库头文件整个包在namespace里,只要在原有的库实现文件里using一下就可以了。
等你用到自己程序里的时候,选择性的利用namespace暴露这个类型。
[/Quote]
头文件和cpp文件我都不能改,请问怎么包在自己的namespace里?
is2120
2011-03-22
打赏
举报
回复
选择局部暴露namespace
碎碎念
2011-03-22
打赏
举报
回复
不用typedef,换成预编译,然后用#ifdef判断...
delphiwcdj
2011-03-22
打赏
举报
回复
[Quote=引用 2 楼 prhanxben 的回复:]
引用 1 楼 delphiwcdj 的回复:
定义到不同的命名空间
不可能在使用的地方一一加上namespace,这个怎么讲
就是比如在所有 cout 前加上std::cout
但我已有的代码这种地方太多了,都加不可能。
两个头文件是人家的东西我不能改,请问怎么把这俩重名的定义到不同名字空间?
[/Quote]
可以利用编译器帮你完成代码替换,VS下Ctrl+f指定你替换的内容和范围
delphiwcdj
2011-03-22
打赏
举报
回复
没有想到好的办法,关注下
qq120848369
2011-03-22
打赏
举报
回复
给你的库头文件整个包在namespace里,只要在原有的库实现文件里using一下就可以了。
等你用到自己程序里的时候,选择性的利用namespace暴露这个类型。
taodm
2011-03-22
打赏
举报
回复
怕麻烦就别搞编程。
mapoor
2011-03-22
打赏
举报
回复
[Quote=引用 1 楼 delphiwcdj 的回复:]
定义到不同的命名空间
不可能在使用的地方一一加上namespace,这个怎么讲
[/Quote]
他意思是 用到的地方很多,全加namespace::Typename麻烦。
建议可以用宏#define Typename namespace::Typename
prhanxben
2011-03-22
打赏
举报
回复
[Quote=引用 1 楼 delphiwcdj 的回复:]
定义到不同的命名空间
不可能在使用的地方一一加上namespace,这个怎么讲
[/Quote]
就是比如在所有 cout 前加上std::cout
但我已有的代码这种地方太多了,都加不可能。
两个头文件是人家的东西我不能改,请问怎么把这俩重名的定义到不同名字空间?
delphiwcdj
2011-03-22
打赏
举报
回复
定义到不同的命名空间
不可能在使用的地方一一加上namespace,这个怎么讲
Google C++ Style Guide (中文版).pdf
Google C++ Style Guide (中文版).pdf 指导C++编码规范
头文件
重复
定义
的问题&宏
定义
1.
头文件
重复
定义
的问题
头文件
包含其实是一件很烦琐的工作,不但我们看着累,编译器编译的时候也很累,再加上
头文件
中常常出现的宏
定义
。感觉各种宏
定义
的展开是非常耗时间的,远不如自
定义
函数来得速度。我仅就不同
头文件
、源文件间的句则结构问题提出两点原则,仅供参考: 第
一个
原则应该是,如果可以不包含
头文件
,那就不要包含了。这时候前置声明可以解决问题。如果使用的仅仅是
一个
类的指针,没有
C语言中,假如我
一个
C文件包含了
两个
头文件
,而
两个
头文件
中都有对同
一个
宏或结构体的
定义
,编译时如何处理?
编译器通常不会报错,因为
重复
的
定义
是相同的,这种情况在实际开发中是允许的。这种情况下,MAX都
定义
为100,编译器不会报错。编译器会报错,指出宏的重新
定义
问题。在C语言中,如果
两个
头文件
中
定义
了同名的结构体,可能会引发冲突,具体取决于它们的
定义
是否完全相同以及如何使用这些结构体。1. 如果结构体
定义
完全相同。
【学习笔记】
头文件
中
定义
函数出现
重复
定义
报错
static 关键字会改变函数和变量的链接属性,默认情况下全局变量和函数是外部链接,也就是它们可以被其他编译单元使用。但
一个
添加了 static 的函数或变量只在它
定义
的编译单元中可见,这样,每个包含类似上面
头文件
的源文件都独立拥有。工程在编译时,每个编译单元(简单来说就是源文件以及引入的
头文件
构成了编译单元)都会引入
头文件
,也就是说。这导致每个编译单元都
定义
了相同的函数,也就是位于
头文件
中的。都在各自组成的编译单元中,引入(复制一份)了
头文件
。,且在各自的函数中调用了
定义
在
头文件
中的。
C/C++中
头文件
重复
包含和变量
重复
定义
在
头文件
重复
包含和变量
重复
定义
的错误提示中多半会包含这样
一个
单词----redefinition一、如何避免
头文件
重复
包含1. 为何要避免
头文件
重复
包含的原因?在编译c或c++程序时候,编译器首先要对程序进行预处理,预处理其中一项工作便是将你源程序中#include的
头文件
完整的展开,如果你有意或无意的多次包含相同的
头文件
,会导致编译器在后面的编译步骤多次编译该
头文件
,工程代码量小还好,工程量一大...
C++ 语言
65,182
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
积分榜
荣誉榜
原力榜
学习榜
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章
手机看
关注公众号
客服
返回
顶部