2010-11-20 9 views
1

Die Situation ist ein bisschen seltsam, aber ertragen Sie mit mir. Ich brauche eine Skriptsprache, die leicht in C aufgerufen werden kann (nicht cpp, C). vorzugsweise kann die Script-Funktion als reguläre C-Funktion aufgerufen werden. Ich brauche die Skriptsprache, um Tuple zu verwenden, also kann ich etwas wie das unten schreiben. Behalte in mir seinen Unsinn, ich möchte nur Tupel zurückgeben können. Der Rückgabetyp muss ein ptr sein und alle Eingänge sind entweder void * (Tupel), int oder char *Hack C, Call Scripting Func anstelle von C Func?

myfunc(a, b, c, d) { 
    a.b = b 
    a.z = anotherFunc(b,c) 
    return a, d 
} 
myfunc2(z) { 
    a, d = z 
    return d+4, a+1 
} 
+0

Wie erwartet der C-Compiler von 'myfunc()', wenn es sich um eine Skriptfunktion handelt, die zur Laufzeit definiert und veränderbar ist? – Javier

Antwort

4

Werfen Sie einen Blick auf Lua, insbesondere die API for calling from C. Sie sollten damit machen können, was Sie brauchen.

+1

+1, weil Lua eines der einfachsten C APIs da draußen hat. – Javier

0

Betrachten Sie Ruby. Es ist made for calling from C (wie es in C geschrieben ist), und die Schnittstelle ist extrem einfach. Außerdem bekommt man eine mächtige Sprache - im Gegensatz zu Lua.

Als Bonus es passt genau Ihre angegebene Funktion-Aufruf-Schnittstelle:

Der Rückgabetyp ein ptr und alle Eingänge sind entweder void * (Tupel) sein muss, int oder char *

Das ist ziemlich genau das, was Rubys funktionierende Schnittstelle unterstützt.