Помимо paramCount()
есть функция paramStr()
, которая
фактически получает строки аргумента.
Если ваша программа на С:
int cmain(int argc, char **argv)
{
int x;
for (x=0; x < argc; x++)
printf("%d: %s\n", x, argv[x]);
}
Тогда ваша программа Nim test.nim
должна преобразовать значения, возвращаемые
повторные paramStr()
обращения к совместимому char **
:
{.compile: "cmain.c".}
proc cmain(c: cint, a: cstringArray): cint {.importc.}
import os
var nargv = newSeq[string](paramCount())
var x = 0
while x < paramCount():
nargv[x] = paramStr(x+1) # first is program name
x += 1
var argv: cStringArray = nargv.allocCStringArray()
discard cmain(cint(paramCount()), argv)
argv.deallocCStringArray()
Затем выполнение nim c -r test.nim def ghi
дает:
0: def
1: ghi
(используя прагму compile
, вам не нужно создавать общий объект из файла C и ссылаться на него, но, конечно, это тоже возможно)