命令行C程序到Swift

Mas*_*ard 15 c command-line-interface ios swift

我有一个命令行的源代码C game,等待用户stdin和输出stdout.我想从文本字段输入main到此C代码的输入,并在文本区域字段中输出例如.

int mainer(int argc, char **argv) {
    int i;
    int hitme;
    char ch;
    prelim();

    if (argc > 1) { // look for -f option
        if (strcmp(argv[1], "-f")== 0) {
            coordfixed = 1;
            argc--;
            argv++;
        }
    }


    if (argc > 1) {
        fromcommandline = 1;
        line[0] = '\0';
        while (--argc > 0) {
            strcat(line, *(++argv));
            strcat(line, " ");
        }
    }
    else fromcommandline = 0;
 // some other code

}
Run Code Online (Sandbox Code Playgroud)

这里的例子中,我应该做以下事情:

let args = [" ", "regular", "short", ""]

var cargs = args.map { strdup($0) }
let result = mainer(Int32(args.count), &cargs)
for ptr in cargs { free(ptr) }
Run Code Online (Sandbox Code Playgroud)

我怎么能打电话main function给它,让它保持活力并不断给它起作用的论据command line.

xde*_*eon 0

我不认为这是执行此操作的正确位置。main 的目的是本质上启动应用程序,然后将控制权传递给应用程序委托并从那里继续。来自 Apple\xe2\x80\x99s 文档: \xe2\x80\x9c 除了少数例外,您永远不应该更改 Xcode 提供的 main 函数的实现。\xe2\x80\x9d https://developer.apple.com/library /ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html

\n\n

还有其他方法可以将 C 与 Objective-C 混合。如果您需要调用 C,最好的位置可能是需要此数据的视图。这些链接可能会有所帮助:在 Objective-C 类中混合 C 函数

\n