为了账号安全,请及时绑定邮箱和手机立即绑定

关于C++源代码中取消名字空间(namespace)而保留原有功能的问题,该怎么解决?

关于C++源代码中取消名字空间(namespace)而保留原有功能的问题,该怎么解决?

蓝山帝景 2021-12-02 11:07:29
我有一些C++代码库的源代码,里面有很多源文件,声明了很多名字空间,实现的是比较简单的功能,我想把其中所有的变量声明、类、结构和函数都简单放到一个头文件(.h)和一个源文件(.cpp)中以便调用,取消其中所有的名字空间(namespace)。请问用什么思路以及软件(代码分析、代码重构等软件),通过什么方法和步骤可以实现这一目的?同时需保证编译不会报错。要是想内联GRETA正则表达式模板类库,就难喽~
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

参考一下:
就是把命名空间声明与宏定义组合起来用
namespace nsdebug //名字空间nsdebug是在别的文件里定义的
{
int GetStringWidth(char* s);
int GetCellValue(int x,int y);
}

#define GetStringWidth nsdebug::GetStringWidth
#define GetCellValue nsdebug::GetCellValue
把这些个名字空间都加近来,再一一定义一个宏,做成一个新的头文件。这样的话不必修改原来代码的任何内容。

查看完整回答
反对 回复 2021-12-07
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我也曾遇到过这中问题,曾经也找到了解决方案,但是觉得不完美后来就不用了,不过可以给你参考一下:
就是把命名空间声明与宏定义组合起来用
namespace nsdebug //名字空间nsdebug是在别的文件里定义的
{
int GetStringWidth(char* s);
int GetCellValue(int x,int y);
}

#define GetStringWidth nsdebug::GetStringWidth
#define GetCellValue nsdebug::GetCellValue
把这些个名字空间都加近来,再一一定义一个宏,做成一个新的头文件。这样的话不必修改原来代码的任何内容。
不过后来我觉得用宏还是不稳心,东西多了次早会遇到宏陷阱,后来就废弃了这种方法。



查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 775 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信