有没有一种有效的方法来“枚举”C ++中的命名空间?

时间:2011-06-01 10:59:41

标签: c++ namespaces

有没有办法在C ++中以编程方式枚举命名空间及其成员?

我有一个使用多个命名空间的大型C ++程序。我不熟悉代码库,并且想确定哪些函数/类/变量与哪些名称空间相关联。

我目前的方法是简单地逐个删除'using namespace'指令并检查编译期间的中断,但我认为有更好的方法来实现相同的目标。

5 个答案:

答案 0 :(得分:4)

这在C ++中是不可能的。

但是,您可以使用外部工具,例如Doxygen,它们将创建将列出命名空间的所有成员的文档(HTML和其他格式)。

答案 1 :(得分:1)

不幸的是,内省并不是C ++的一大特色。没有办法(在语言中)做你想做的事。您需要一个外部代码分析工具(可以解析代码并构建引用的东西)来完成这项工作。我使用cscope进行了大量的分析,但据我所知,它并不真正了解命名空间,所以可能不是适合你的工具。

答案 2 :(得分:1)

您可以使用C ++前端(例如Elsa)为您完成这项工作。

还要考虑使用具有“Go To Defiinition”功能的良好IDE(例如Microsoft Visual Studio)。

答案 3 :(得分:1)

您可以先运行Doxygen来生成项目中定义的所有函数/类/命名空间的索引。确保编辑设置以生成未记录符号的索引。

答案 4 :(得分:0)

如果您知道要查找的名称空间,则只需生成一个地图文件(g++ -Wl,-Map,MyMapFile.map)即可。然后搜索例如地图文件中的MyNamespace::