我很难创建 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_directly
and为给定的类定义了一个方法add_method
,但我不知道如何定义方法的主体。有什么帮助吗?