1

我很难创建 GCC (8.3.0) 插件。

我正在尝试使用 [[c++11::attributes]] 提供的一些信息为用户定义的类定义一个虚拟方法。到目前为止,我一直在尝试做的——在进入更复杂的东西之前——定义一个虚拟函数,它给出了以下定义和代码:

class Base
{
    virtual void toJson() = 0;
}

class [[ns::object]] UserClass : public Base
{
    [[ns::field]]
    int a;

    [[ns::field("beta")]]
    int b;

    int c;

    [[ns::field]]
    int d;
}

int main()
{
    Base * obj = new UserClass;
    obj->toJson();

    return 0;
}

像这样写一个假的json stdout

{
    "a": "value",
    "beta": "value",
    "d": "value"
}

我能够注册属性并收集有关用户定义的类及其字段的信息,但我不知道如何在类型中注入虚拟方法声明,也不知道如何定义它的主体。我在 GCC 插件文档(极差)和在线搜索,但我没有运气。

编辑

好的,所以我设法使用build_method_type_directlyand为给定的类定义了一个方法add_method,但我不知道如何定义方法的主体。有什么帮助吗?

4

0 回答 0