2

我刚刚开始探索 GCC 插件 API 的世界,我正在尝试为以下示例扩展 GCC。

class Foo { ... };

Foo* f = __construct Foo(); // __construct is meant to be a new keyword

理想情况下,我希望插件简单地替换为类似的__construct东西new (foo_class_info),所以你最终会得到

Foo* f = new (foo_class_info) Foo();

wherefoo_class_info已通过PLUGIN_FINISH_TYPE回调提供(即 __construct 不能在预处理器传递中替换)。

实现这一目标的正确/最简单方法是什么?我什至不介意将一些用户域模板代码与插件结合起来。

添加一个新的通行证是要走的路吗?如果是这样,我真的可以使用一些指针。

4

1 回答 1

0

插件从根本上不能改变语法。

您最多可以添加一个新的编译指示、属性或内置函数,然后在以后的过程中使用它们。

于 2017-11-27T23:44:05.153 回答