Squirrel側では、returnではなくprint()を使って渡します。
他のやり方があって、returnでも渡せるかもしれないが、今回はprint()で渡します。
その1で使った test.nut の中身を下記のように変えます。
function foo(i, f, s)
{
print(123);
print(0.987);
print("abc");
}
その1で使った minimal.c の printfunc 関数の中身を下記のように変えます。
switch (sq_gettype(v, -2)) {
case OT_INTEGER:
SQInteger ret;
sq_getinteger(v, -2, &ret);
sq_pop(v, 1);
printf(" int = %d ", (int)ret);
break;
case OT_FLOAT:
SQFloat fret;
sq_getfloat(v, -2, &fret);
sq_pop(v, 1);
printf(" float = %f ", fret);
break;
case OT_STRING:
const SQChar *cret;
sq_getstring(v, -2, &cret);
sq_pop(v, 1);
printf(" string = %s ", cret);
break;
}
これで実行してやると
int = 123 float = 0.987000 string = abc
と表示されると思います。
Squirrel側でprint()した値がC側に渡されたことになります。
0 件のコメント:
コメントを投稿