我在Linux上使用LLVM-clang。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;
請修改您的代碼。很多不一致。 – kennytm 2010-04-04 06:37:39
clang有一個解析器庫,應該可以做到這一點。你可以在程序中使用它來解析這個字符串作爲一個翻譯單元,並且當它完成解析事件時讓它回調你的函數,這樣你就可以發出正確的代碼。 – 2010-04-04 22:02:22
@kennyTM:不一致在哪裏? – anon 2010-04-05 07:35:56