i did a first try calling rb_class_new_instance with variable args
length :
rosxutils.c: In function m_rfile_wo:
rosxutils.c:1870: error: parse error before [ token
1867 VALUE m_rfile_wo ( VALUE self, VALUE file, VALUE options )
1868 {
1869 char *cfile = StringValuePtr ( file );
1870 VALUE[2] args;
1871 //VALUE args[2];
1872 args[0] = file;
1873 args[1] = options;
1874 return rb_class_new_instance ( 2, &args, rb_path2class
( “RFile” ) );
1875 }
HERE i don’t see where is the parse error ???
rosxutils.c: In function m_rfile_wo:
rosxutils.c:1874: warning: passing argument 2 of rb_class_new_instance
from incompatible pointer type
1867 VALUE m_rfile_wo ( VALUE self, VALUE file, VALUE options )
1868 {
1869 char *cfile = StringValuePtr ( file );
1870 //VALUE [2] args;
1871 VALUE args[2];
1872 args[0] = file;
1873 args[1] = options;
1874 return rb_class_new_instance ( 2, &args, rb_path2class
( “RFile” ) );
1875 }
AND HERE why the pointer is incompatible, because of the “&” ???
Yvon
On 8/21/07, unbewusst [email protected] wrote:
1875 }
return rb_class_new_instance( 2, args, rb_path2class( “RFile” ) );
Blessings,
TwP
unbewusst wrote:
1871 //VALUE args[2];
1872 args[0] = file;
1873 args[1] = options;
1874 return rb_class_new_instance ( 2, &args, rb_path2class
( “RFile” ) );
1875 }
HERE i don’t see where is the parse error ???
“VALUE[2] args;” is not valid C.
You need to use VALUE args[2];
1871 VALUE args[2];
1872 args[0] = file;
1873 args[1] = options;
1874 return rb_class_new_instance ( 2, &args, rb_path2class
( “RFile” ) );
1875 }
AND HERE why the pointer is incompatible, because of the “&” ???
Yes. In this context, “args” is a pointer to a VALUE, or “VALUE *”.
&args is then a pointer to a pointer to a VALUE, or “VALUE **”.
On 21 août, 19:19, Nobuyoshi N. [email protected] wrote:
Nobu Nakada
ok thanks to all of you, i’ve found it bu myself
Yvon
Hi,
At Wed, 22 Aug 2007 01:29:57 +0900,
Tim H. wrote in [ruby-talk:265676]:
&args is then a pointer to a pointer to a VALUE, or “VALUE **”.
VALUE (*)[2] which is different from VALUE **.