gpt4 book ai didi

c - [C]我可以用比参数更大的类型调用 va_arg,然后转换值吗?

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

我想知道这是否是有效代码:

int a(va_list args, int is_int, ...)
{
long long n = va_arg(args, long long);
return (is_int ? ((int)n) : n);
}
void b(va_list args)
{
int x = -100;
a(args, 1, x);
}

我写了一些不必要的复杂代码,我犯了错误,我觉得这是最简单的方法来修复我所做的事情而无需重写整个代码,但我不知道这是否会导致错误(或段错误,或其他东西)。

最佳答案

不,问题不仅限于大小。如果类型不匹配,则整个程序的行为是未定义的。有一些非常有限的异常(exception)情况,例如当传递的实际值符合任一符号时符号不匹配。

关于c - [C]我可以用比参数更大的类型调用 va_arg,然后转换值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361814/

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