gpt4 book ai didi

c - foo() 的用例是什么(意味着 foo 有未知数量的参数)?

转载 作者:行者123 更新时间:2023-11-30 15:46:50 29 4
gpt4 key购买 nike

所以我最近在 Hacker News 上读到了一些关于函数指针的内容,并意识到 void foo()void foo(void)不是等效的原型(prototype)。因此,我开始确保这确实是真的:

int foo()
{
return 0;
}
int main()
{
return foo(1,2,3,4);
}

果然,这段代码编译时甚至没有警告。这段代码会抛出错误:

int foo(void)
{
return 0;
}
int main()
{
return foo(1,2,3,4);
}

这看起来很容易出错。我还以为...对于“任意数量的参数”,例如 printf的签名

int printf ( const char * format, ... );

C89 或 K&R 中也是如此吗?任何人都可以深入了解此“功能”的用例吗?

最佳答案

它本身并不是一个真正的“功能”。这就是该语言最初的使用方式,因此语法一直保留着,以保持旧代码的工作。例如,添加 void 使得可以拥有显式不带参数的函数。

使用 ... 表示可变参数函数,但它与仅接受任意数量参数的函数略有不同。使用 ... 需要使用 stdarg.h 宏,但仅使用 () 声明函数则不需要。

关于c - foo() 的用例是什么(意味着 foo 有未知数量的参数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997820/

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