使用 gcc 插件获取类注释



我正在创建一个 gcc 插件,用于在解析C++文件后对其进行分析。该插件遍历类并生成有关它们的一些信息。插件正在工作,这就是我上课的方式。

    cp_binding_level* level(NAMESPACE_LEVEL(nameSpace));
    for (decl = level->names; decl != 0; decl = TREE_CHAIN(decl)) {
        tree type(TREE_TYPE(decl));
        tree_code dc(TREE_CODE(decl));
        tree_code tc;
        if (dc == TYPE_DECL&& tc == RECORD_TYPE &&
            !DECL_IS_BUILTIN (decl) && DECL_ARTIFICIAL (decl)) {
                //Now we know this is a class
                //Do something
        }
     }

我想选择他可以分析哪个类,不能分析哪个类。我的第一个想法是添加某种注释,当我解析类时我会阅读它,并决定是否分析它。

我从未在C++中使用过任何类型的注释,所以我不知道这是否可能。如果是这样,您将如何建议我使用它们,并在插件中获取注释?如果不是,有没有好方法可以做我需要的事情?

这是可以做到的,它不是太难,而且使用 GCC 插件是一件很常见的事情。

首先,必须注册一个新属性。 GCC 提供PLUGIN_ATTRIBUTES回调作为方便的时间。 然后,回调函数可以调用register_attribute来注册属性。 这记录在手册中,距离您链接到的位置只有一个链接。

使用此函数,您可以注册另一个在应用属性时调用的回调。 您必须阅读一些GCC头文件或源代码才能真正了解此函数应该做什么。 但是,它可以轻松地跟踪它是否被应用于类,如果是,请记下这一点以供以后处理。

相关内容

  • 没有找到相关文章

最新更新