使用未定义数量的参数调用C函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用未定义数量的参数调用C函数相关的知识,希望对你有一定的参考价值。
注意这个问题并不是指省略号。
请考虑以下代码
#include <stdio.h>
void foo() {
printf("I AM AWESOME
");
}
main(void) {
foo(1,2,3);
foo();
return 0;
}
该程序运行完美,并提供输出。然而,在'main'的情况下,这无论如何都有效
main(void)
要么
main()
什么时候,将foo定义为
foo(void)
给出一个错误 - “太多的论点”。
如果两者都是功能,它们是否也应遵循相同的规则?
答案
当您声明一个没有参数的函数时,它意味着禁用类型检查并使用K&R调用约定。这并不意味着该功能没有参数。
在ANSI中,如果要明确说明函数没有参数,则需要将其声明为fun(void)。
另一答案
foo(void)不带参数(!!!),而foo()接受一个未指定数量的参数!
另一答案
在C中也是其他一些叫做变量数量的参数
void foo(int x, ...)
https://www.geeksforgeeks.org/variable-length-argument-c/
以上是关于使用未定义数量的参数调用C函数的主要内容,如果未能解决你的问题,请参考以下文章