On Tue, Nov 6, 2012 at 12:31 AM, Peter Enerccio <span dir="ltr"><<a href="mailto:enerccio@gmail.com" target="_blank">enerccio@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

I am using this kind of macro:<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>#define DEFUN( name, argcount, fpointer) do { \<br>

    cl_def_c_function(c_string_to_object(name), \<br>
            (cl_objectfn_fixed)fpointer, \<br>            argcount); \<br>    } while (0)<br><br></blockquote><div><br></div><div>This code is wrong. If you want to create a function with a variable number of arguments, the function F should have signature</div>

<div><br></div><div>cl_object F(cl_narg narg, ...)</div><div><br></div><div>and be defined with</div><div><br></div><div>ecl_def_c_function_va(symbol, F)<br></div><div><br></div><div>If you instead want to use a function with a fixed number of arguments (say 2), then the signature should be</div>

<div><br></div><div>cl_object F(cl_object arg1, cl_object arg2)</div><div><br></div><div>and be defined with</div><div><br></div><div>ecl_def_c_function(symbol, F, 2)</div><div><br></div><div>But this is strongly discouraged and not future proof: write the code in lisp and let ECL compile it.</div>

<div><br></div><div>Juanjo</div><div><br></div></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a><br>


</div>