【问题标题】:extracting member variables from struct or class从结构或类中提取成员变量
【发布时间】:2013-10-31 01:28:36
【问题描述】:

是否有可以从源代码中提取给定结构或类的成员变量的工具? 我期待的是以下内容

假设 target.c 如下:

#include <stdio.h>
struct A {
    int a;
    int b;
};
int main()
{
    blah...
}

而且,如果我在 bash 中做类似的事情:

$ extract-member target.c A
struct A member list:
 - int a;
 - int b;

有没有像“extract-member”这样的工具?

【问题讨论】:

  • 我不熟悉任何类似的工具,但创建一个并不难。您需要做的就是在文件中找到某个关键字,说出“类”关键字,然后提取其中的成员。
  • @lightbringer:传奇般地很难做好,因为可能会使用包含、预处理器宏、cmets、三元组、合法的 C++ 代码,这些代码只有在了解先前声明的情况下才能准确解释 - 通常,C++ 的非凡复杂性...
  • 东西在side struct中,可能有cmets。所以,我认为那里需要某种正则表达式。
  • 这到底有什么好处...
  • @Havenard:我正在考虑制作一个简单的工具来可视化调用跟踪及其相应的结构

标签: c++ c class struct


【解决方案1】:

ctags、doxygen、gccxml 等程序都提供了解决此问题的方法...您可能想在线阅读它们并确定哪些适合您的需求。

【讨论】:

  • 据我所知,ctags 和 doxygen 没有暴露 API 来访问这些内部结构。我希望我可以为此目的阅读 ctags 和 doxygen 的来源,但我正在寻找一种更简单的方法,如果有的话。而且,我是 gccxml 的新手,也许我必须查一下。
  • 从gccxml的介绍来看,看起来很符合我的目的。谢谢!
  • @jaeyong:对于 doxygen,我认为这是 GENERATE_XML 选项 - 你可能没有 API,但你可以使用任何你喜欢的 XML 库的 API 加载输出。 ctags 可能对你来说更难使用,因为我怀疑你是对的,没有方便的标准 API,据我所知,使用 ctags 输出的应用程序会编写自己的解析代码。
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2019-07-28
  • 2014-05-22
  • 2010-12-13
  • 1970-01-01
相关资源
最近更新 更多