Я использую LLVM-clang для Linux.llvm clang struct создает функции на лету
Пусть в 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
У clang есть библиотека парсера, которая должна быть в состоянии сделать это. Вы можете использовать его изнутри программы для синтаксического анализа этого строкового литерала как единицы перевода и заставить его перезванивать ваши функции, когда он закончит разбирать вещи, чтобы вы могли испускать правильный код. –
@kennyTM: где несоответствия? – anon