【发布时间】:2010-04-04 05:48:31
【问题描述】:
我在 Linux 上使用 LLVM-clang。
假设在 foo.cpp 我有:
struct Foo {
int x, y;
};
我怎样才能创建一个“神奇”的函数:
typedef (Foo) SomeFunc(Foo a, Foo b);
SomeFunc func = magic("struct Foo { int x, y; };");
这样:
func(SomeFunc a, SomeFunc b); // returns a.x + b.y;
?
注意:
所以基本上,“魔术”需要一个 char*,让 LLVM 解析它以获取 C++ 如何布局结构,然后动态创建一个返回 a.x + b.y; 的函数
【问题讨论】:
-
请修改您的代码。很多不一致。
-
clang 有一个解析器库,它应该能够做到这一点。您可以在程序中使用它来将该字符串文字解析为翻译单元,并在完成解析后使其回调您的函数,以便您可以发出正确的代码。
-
@kennyTM:不一致的地方在哪里?