Hi,
I'm trying to understand macro expansion, and am a bit stuck. I would like,
in distilled form, to have a macro "@do_ccall" which calls its argument
with Int type. Thus I would like
julia> macroexpand(:(@do_ccall(f,1,2,3)))
:(ccall(f,Int,(Int64,Int64,Int64),args...))
and I programmed it as
julia> macro do_ccall(f,args...)
:(ccall(f,Int,$(ntuple(i->Int,length(args))),args...)) end
@do_ccall (macro with 1 method)
Now the tuple argument just doesn't seem to get interpreted properly:
julia> @do_ccall(C_NULL,1,2,3)
ERROR: syntax: ccall argument types must be a tuple; try "(T,)"
in eval(::Module, ::Any) at ./boot.jl:237
(note: calling the routine at C_NULL would have crashed Julia; it's just
for demonstration purposes)
Thanks in advance! Laurent