В C/C++ неудобно то, что придётся с собой исходники всей программы со всеми библиотеками таскать. Иначе как компилятор узнает что такое rgba в вышеприведённом примере? Вдруг эта сущность от какой-нибудь макросошаблонной магии из недр boost'а, например, выводится.
Или предполагается более лёгкий вариант, когда ответственность за бинарную совместимость внутренней и внешней программ перекладывается на программиста? То есть это будет его задачей следить, чтобы из переданного текста было понятно что такое rgba, и чтобы этот тип был бинарно совместим с исходным?
CS> Может кто-то видел что похожее?
Запускается компилятор (упакованный в библиотеку или даже stand-alone), ему скармливается строчка-программа, формируется динамически загружаемая библиотека и из неё импортируется новосозданная функция
Вариант тупой, но рабочий. Иногда даже сами разработчики компиляторов такую схему используют (см. gcc jit, например, хотя там и не C на входе).
CS> некий inline C to native code compiler.
С компилятором clang идёт пример clang-interpreter — там как раз программа через llvm jit запускается. Или вот есть cling, как дальнейшее развитие идеи.
Категорически не хочется привлекать ни GCC ни что-то еще внешнее.
Нужна условно говоря библиотека.
Ну вот есть же JIT всякие... Вот что-то такое и ищется.
Ну скажем вот http://sljit.sourceforge.net/
У него на входе некий абстрактный ассемблер. По идее можно сделать компилятор чего-то в тот ассемблер и скормить ему.
Здравствуйте, c-smile, Вы писали:
CS>Подумалось вот что хорошо бы иметь некий inline C to native code compiler. Типа того же shader compiler в OpenGL. CS>По идее всем scripting языкам такое бы не помешало. Может кто-то видел что похожее?