猿问

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

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

蓝山帝景
浏览 778回答 2
2回答

饮歌长啸

参考一下:就是把命名空间声明与宏定义组合起来用namespace nsdebug //名字空间nsdebug是在别的文件里定义的{int GetStringWidth(char* s);int GetCellValue(int x,int y);}#define GetStringWidth nsdebug::GetStringWidth#define GetCellValue nsdebug::GetCellValue把这些个名字空间都加近来,再一一定义一个宏,做成一个新的头文件。这样的话不必修改原来代码的任何内容。

梵蒂冈之花

我也曾遇到过这中问题,曾经也找到了解决方案,但是觉得不完美后来就不用了,不过可以给你参考一下:就是把命名空间声明与宏定义组合起来用namespace nsdebug //名字空间nsdebug是在别的文件里定义的{int GetStringWidth(char* s);int GetCellValue(int x,int y);}#define GetStringWidth nsdebug::GetStringWidth#define GetCellValue nsdebug::GetCellValue把这些个名字空间都加近来,再一一定义一个宏,做成一个新的头文件。这样的话不必修改原来代码的任何内容。不过后来我觉得用宏还是不稳心,东西多了次早会遇到宏陷阱,后来就废弃了这种方法。
随时随地看视频慕课网APP
我要回答