I actually found the solution by myself: 
    
    
    # Note: extremely unsafe code, assumes that this is running on a 64-bit 
machine
    # 16 byte should be used for closures
    var procedures: seq[array[8, byte]] = @[]
    procedures.add(cast[array[8, byte]](greet))
    procedures.add(cast[array[8, byte]](someotherproc))
    
    # It does compile and work without the nimcall pragma, but I let it there, 
safety first
    cast[proc(msg: string) {.nimcall.}](procedures[0])("Hallo Welt")
    cast[proc(){.nimcall.}](procedures[1])()
    

Also procedures has to be a var instead of let, ah I'm so depending on auto 
linting.

Atleast I learned something while breaking Nim. Breaking the rules is something 
which is only rarely taught(for good reasons). But I'm glad that it's possible 
in Nim.

Reply via email to