C语言 正确使用janet_wrap_array的方式



我正在尝试在护士上使用janet c api,但我没有得到我所期望的。

我尝试在c文件

上定义函数
static Janet jgetyx(int32_t argc, Janet *argv){
janet_fixarity(argc, 1);
WINDOW *win = (WINDOW *) janet_getpointer(argv, 0);
int y, x; 
getyx(win, y, x);
int *yxpos[2] = {y, x};
return janet_wrap_array((JanetArray *) &yxpos);
}

我像这样调用定义的函数

(nc/mvwprintw win 2 2 (string (get info 1) " " (get info 0)))

但是结果是

this is the header─┐
│this is a box     │
│ 4.64148e-310 3.458
46e-323            │
│                  │
│                  │
│                  │
│                  │
│                  │
└──────────────────┘

我希望在盒子的第二行有值,但相反,我得到了内存地址,因为它看起来…我对c语言的生疏知识并不能使我更接近于解决这个问题。

有人能帮我吗?

代码可以在test/term-info.janet上找到。

谢谢!

我还询问了关于存储库的问题。一种可行的方法是:

int y, x;
getyx(win, y, x);
JanetArray *arr = janet_array(2);
janet_array_push(arr, janet_wrap_integer(y));
janet_array_push(arr, janet_wrap_integer(x));
return janet_wrap_array(arr);

最新更新