gpt4 book ai didi

Swift 项目中的 C 代码

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:22 25 4
gpt4 key购买 nike

我有一个 C 程序,我想从 swift 打印它的输出,当它扫描时我可以通过 Swift 给它输入。这样的事情可能吗?我用一个简单的函数尝试了这个,它成功了,但是有人怎么能用调用其他函数的许多不同函数来做到这一点呢?

我知道这个问题有点含糊,但有人能指出我正确的方向吗?

代码示例:

int main(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;


while (TRUE) { /* Play a game */
setup();
if (alldone) {
score(0);
alldone = 0;
}
else makemoves();
skip(2);
stars();
skip(1);

if (tourn && alldone) {
printf("Do you want your score recorded?");
if (ja()) {
chew2();
freeze(FALSE);
}
}
printf("Do you want to play again?");
if (!ja()) break;
}
skip(1);
prout("May the Great Bird of the Galaxy roost upon your home planet.");
return 0;
}

最佳答案

是的。

Using Swift with Cocoa and Objective-C 对此进行了广泛介绍. Objective-C 是 C 的超集,因此 Objective-C 的所有指令同样适用于 C。

简短的版本是您只需将 C 代码添加到您的项目,将其 header 导入您的 Objective-C Bridging Header,然后 C 函数将在 Swift 中可用(使用各种自动翻译)。

也就是说,如果您真的想读取输出(即这些 printf 调用的结果),那就有点不同了。如果可以的话,我会避免它。否则你需要做一些事情,比如将 C 程序构建为它自己的可执行文件,并在 Swift 中使用 NSTask 来调用它并捕获输出,或者你必须使用类似 fdopen。完全正确地做到这一点很痛苦。

关于Swift 项目中的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com