Portál AbcLinuxu, 15. července 2025 12:33
#include <stdio.h> #include <string.h> #define XP_UNIX #include <mozjs/jsapi.h> int main(void) { // premenne JSRuntime *rt; JSContext *cx; JSObject *global; JSClass global_class = {"global",0, JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub, JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub}; // inicializacia rt = JS_NewRuntime(0x100000); // jeden runtime na kazdy proces cx = JS_NewContext(rt, 0x1000); // jeden kontext na kazdy thread global = JS_NewObject(cx, &global_class, NULL, NULL); // globalny objekt pre kazdy kontext JS_InitStandardClasses(cx, global); // standardne triedy (Date,...) // samotny skript - faktorial 5 char *script = "(function fact(n){if (n <= 1) return 1; return n * fact(n-1)})(5)"; char *filename; int lineno; jsval rval; JSString *str; JSBool ok; // spustime ok = JS_EvaluateScript(cx, global, script, strlen(script), filename, lineno, &rval); // navratova hodnota str = JS_ValueToString(cx, rval); printf("script result: %s\n", JS_GetStringBytes(str)); return 0; }Kompilacia a spustenie
$ gcc -lmozjs -ggdb -o pokus pokus.c $ ./pokus script result: 120
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.