gpt4 book ai didi

c - Zig "translate c"不翻译主要功能

转载 作者:行者123 更新时间:2023-12-03 23:03:42 24 4
gpt4 key购买 nike

我创建了一个 C 文件:

int main() {
return 1;
}

我使用 Zig 的 translate-c 命令行选项生成一个 zig 文件,我只得到一些全局变量声明,如

pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = 1;
pub const __FLT16_MAX_EXP__ = 15;
pub const __BIGGEST_ALIGNMENT__ = 16;
pub const __SIZEOF_FLOAT__ = 4;
pub const __INT64_FMTd__ = c"ld";
pub const __STDC_VERSION__ = c_long(201112);
... // and many

并且没有找到 main 函数。但是,如果我将函数名称更改为 myFunction 像这样:

int myFunction(int a) {
return a;
}

当我重新生成一个函数时出现:

pub export fn myFunction(a: c_int) c_int {
return a;
}

我错过了什么吗? zig的translate-c函数的规则是什么?

最佳答案

当被问到这个问题时,translate-c 还不支持带有未指定参数的函数。这通过使用 --verbose-cimport 可见:

test.c:1:5: warning: unsupported type: 'FunctionNoProto'
test.c:1:5: warning: unable to resolve prototype of function 'main'

在 C 中,如果您将参数留空,则它实际上不是零参数,它是未指定的。您必须使用 void 来表示“无参数”。

这就是第二个示例起作用的原因 - 因为参数列表不为空。

然而,从 e280dce3 开始, Zig 支持翻译带有未指定参数的 C 函数,问题中的示例变成了这个 Zig 代码:

pub export fn main() c_int {
return 1;
}

关于c - Zig "translate c"不翻译主要功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49892119/

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