1

如何在 C++ 中显示命名空间内的所有元素?

可以使用 Doxygen 分离命名空间并打印它们吗?使用 GCC?

我假设我不知道命名空间名称,所以我想将它们全部打印出来,或者我知道特定的命名空间名称并且我想知道里面有什么。

4

2 回答 2

5

C++ 没有反射(例如许多动态语言或 Java 和 .NET),因此在 C++ 中是不可能的。

Doxygen 可以将其数据导出为 XML 而不是 HTML,因此您可以使用 XSLT 样式表将 Doxygen 的 XML 输出转换为您想要的任何格式。

有一个称为 GCC-XML 的 GCC 版本,它不是编译输出解析后的 C++ 代码的 XML 表示,在这里你可以做同样的事情。

最后但同样重要的是,您当然可以为 Clang 的 GCC 创建一个插件并在其中执行此操作(例如,GCC 可以使用 Mozilla 的 Dehydra 补丁使用 Javascript 编写的插件)。

我建议查看 Doxygen XML 输出。

于 2012-10-14T13:35:13.287 回答
2

如果您在 Linux 上,您可以使用nm工具列出生成的二进制文件中的所有符号并根据需要解析输出:

nm -C some-app
于 2012-10-14T13:39:48.427 回答