如何在 v8 中绑定带有 out 参数的 c 函数?
How to bind a c function with out parameters in v8?
C 函数:
void foo(int* p){
*p = 10;
}
然后 js 调用:
var a = 0;
foo(a);
console.log(a);//expect a to be 10
JavaScript 中没有原始类型的输出参数,V8 的 API 非常努力地不创建与 JavaScript 不一致的行为,因为会很奇怪™。
另一种解决方案是将字段嵌入到对象中:
var a = {value: 0}
foo(a);
console.log(a.value); // This can be made to print 10.
通过这种方法,您可以使用通过 V8 的 API 绑定函数的正常方式,而在 C++ 端只需修改传入对象的相应 属性。
C 函数:
void foo(int* p){
*p = 10;
}
然后 js 调用:
var a = 0;
foo(a);
console.log(a);//expect a to be 10
JavaScript 中没有原始类型的输出参数,V8 的 API 非常努力地不创建与 JavaScript 不一致的行为,因为会很奇怪™。
另一种解决方案是将字段嵌入到对象中:
var a = {value: 0}
foo(a);
console.log(a.value); // This can be made to print 10.
通过这种方法,您可以使用通过 V8 的 API 绑定函数的正常方式,而在 C++ 端只需修改传入对象的相应 属性。