0

在这里,我为 Handler 分配了一个参数:

const unsigned argc = 1;
v8::Local<v8::Value> argv[1] = { NanNew("hello world") };

NanMakeCallback(NanGetCurrentContext()->Global(), callHandle, argc, argv);

有用

但我想分配两个参数!这就是为什么我试图这样做:

 const unsigned argc = 2;
 v8::Local<v8::Value> argv[1] = { NanNew("hello world") };
 argv[2] = { NanNew("second argument") };

 NanMakeCallback(NanGetCurrentContext()->Global(), callbackHandle, argc, argv);

但后来我得到这个错误:

functions.cc:97:18: error: expected expression
  argv[2] << { NanNew("second argument") };
             ^

我错了什么?如何分配两个参数?谢谢

4

2 回答 2

3

您似乎正在创建一个大小为 1 的数组:

v8::Local<v8::Value> argv[1] = { NanNew("hello world") };

然后尝试{ NanNew("second argument") };用索引 2 分配给它的元素。这不起作用。你的意思是这样的:

v8::Local<v8::Value> argv[2] = { NanNew("hello world"), NanNew("second arg") };

?

于 2015-06-08T22:09:14.383 回答
3

您正在尝试分两步进行初始化。

int values[2] = { 0, 1 }; // OK: Array of two ints initialized with 0 and 1 respectively

int values[2] = { 0 }; // OK: Array of two ints, first value initialized with 0
values[1]= { 1 }; // Error: This is not an initialization

{ } 语法仅用于数组的初始化。(当然还有功能体等)

在你的情况下,你可能想要这样做

v8::Local<v8::Value> argv[2] = { NanNew("hello world") , NanNew("second argument") };

请注意,您之前尝试创建一个只有 1 个元素 argv[1] 的数组,并尝试访问第三个元素 argv[2] = ...

索引从 0 开始,因此有效索引的范围是 0 到 N-1。

于 2015-06-08T22:11:36.323 回答