使用未定义数量的参数调用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函数的主要内容,如果未能解决你的问题,请参考以下文章

C 函数中未指定数量的参数 - void foo()

帮介绍一下C语言里的varargs。

Python函数

使用删除与隐藏时未调用自定义动画

第四篇 函数

尽管函数调用的参数数量不正确,但 C 程序编译