il ne faut pas definir une nouvelle proc: `mq_open` in posix.nim c'est `varargs`, alors elle va accepter `(cstring,cint...)`
You don't need a new proc: `{.importc varargs.}` procs accept multiple arguments. The documentation for posix could be revised to reflect that. import posix, strformat const QMname = "/QMname" template check(assertion: untyped, msg: typed): untyped = if not assertion: echo msg, &": {strerror(errno)}" proc main() = let attr = MqAttr(mq_maxmsg: 99, mq_msgsize: 1024) let p_attr = attr.addr let mq = mq_open(QMname, O_CREAT or O_RDWR or O_EXCL, 0o644, p_attr) check(mq >= 0, "Error opening queue") check(mq_getattr(mq, p_attr) >= 0, "Error getting attrs") echo &"getattr--> {attr.mq_flags} -- {attr.mq_maxmsg} -- {attr.mq_msgsize} -- {attr.mq_curmsgs}" #cleanup dealloc(attr) discard mq_close(mq) discard mq_unlink(QMname) main() Run