Как я представляю int * в ffi? - PullRequest
0 голосов
/ 09 октября 2018

Я использую FFI в nodejs для взаимодействия c кодом.Я застрял в том, как я представляю int * в интерфейсе.

#include "math.h"

int add(int x, int y)
{
  return x + y;
}

int minus(int x, int y)
{
  return x - y;
}

void multiply(int x, int y, int *result)
{
  *result = x * y;
}

var int = ref.types.int;
...
var math = ffi.Library(mathlibLoc, {
    "add": [int, [int, int]],
    "minus": [int, [int, int]],
    "multiply": [void, [int, int, ??]]
});

module.exports = math;

Как мне представить тип int * в списке аргументов?Я изучил документацию ref, чтобы понять ее, и нашел примеры таких кодов.

var buf = new Buffer(4)
buf.writeInt32LE(12345, 0)

// first, what is the memory address of the buffer?
console.log(buf.address())  // ← 140362165284824

// using `ref`, you can set the "type", and gain magic abilities!
buf.type = ref.types.int

// now we can dereference to get the "meaningful" value
console.log(buf.deref())  // ← 12345


// you can also get references to the original buffer if you need it.
// this buffer could be thought of as an "int **"
var one = buf.ref()

Но не ясно, как представить тип указателя?Может ли кто-нибудь объяснить это?

...