使用duktape javascript实现,您可以将本机C函数公开给javascript并实现它们,如下所示:
static duk_ret_t native_prime_check(duk_context *ctx) {
int arg1 = duk_require_int(ctx, 0);
int arg2 = duk_require_int(ctx, 1);
// do something.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在公开本机函数时,我们需要指定参数的数量.
duk_push_c_function(ctx, native_prime_check, 2 /*nargs*/);
Run Code Online (Sandbox Code Playgroud)
请举例说明如何创建一个C函数,该函数接受可变数量的参数并使用duktape将其公开给Javascript.
当你推C函数时,你也可以给出DUK_VARARGS参数计数.当你这样做时,值栈将直接包含调用参数,并duk_get_top(ctx)给出给定的参数数量:
static duk_ret_t dump_args(duk_context *ctx) {
duk_idx_t i, nargs;
nargs = duk_get_top(ctx);
for (i = 0; i < nargs; i++) {
printf("type of argument %d: %d\n", (int) i, (int) duk_get_type(ctx, i));
}
}
duk_push_c_function(ctx, dump_args, DUK_VARARGS);
Run Code Online (Sandbox Code Playgroud)