有没有办法在C ++中以编程方式枚举命名空间及其成员?
我有一个使用多个命名空间的大型C ++程序。我不熟悉代码库,并且想确定哪些函数/类/变量与哪些名称空间相关联。
我目前的方法是简单地逐个删除'using namespace'指令并检查编译期间的中断,但我认为有更好的方法来实现相同的目标。
答案 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::
。