使用未定义数量的参数调用C函数

问题描述 投票:0回答:3

注意这个问题并不是指省略号。

请考虑以下代码

#include <stdio.h>

void foo() {
    printf("I AM AWESOME\n");
}

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

该程序运行完美,并提供输出。然而,在'main'的情况下,这无论如何都有效

main(void)

要么

main()

什么时候,将foo定义为

foo(void)

给出一个错误 - “太多的论点”。

如果两者都是功能,它们是否也应遵循相同的规则?

c function-call
3个回答
3
投票

当您声明一个没有参数的函数时,它意味着禁用类型检查并使用K&R调​​用约定。这并不意味着该功能没有参数。

在ANSI中,如果要明确说明函数没有参数,则需要将其声明为fun(void)。


1
投票

foo(void)不带参数(!!!),而foo()接受一个未指定数量的参数!


0
投票

在C中也是其他一些叫做变量数量的参数

 void foo(int x, ...)

https://www.geeksforgeeks.org/variable-length-argument-c/

© www.soinside.com 2019 - 2024. All rights reserved.