gpt4 book ai didi

c - 在 C 中,如何判断是否提供了函数的参数?

转载 作者:行者123 更新时间:2023-12-04 08:12:53 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to count the number of arguments passed to a function that accepts a variable number of arguments?

(12 个回答)


7 个月前关闭。




在 C 中,当您声明一个不带参数的函数时,该函数可以接受任意数量的参数。例子:

int sum() {
// some code
}

int subs(void) {
// some code
}

int main() {
sum(1, 2, 3, 4, 5, 6); // This is valid
subs(1, 2, 3, 4, 5, 6); // This is NOT valid
}
在第一种情况(总和)中,如何判断是否提供了一些参数?
提前致谢

最佳答案

How to tell, in C, if parameters to a function are provided?


这是不可能的。从 C 的角度来看,不可能知道是否为此类函数提供了任何参数,也不知道它们的数量是多少。

when you declare a function without parameters, that function can accept any number of parameters


是的,当你 声明 一个没有参数的函数。这并不一定意味着该函数接受任意数量的参数。在您提供的代码中:
int sum() {
// some code
}
这是 sum功能 定义 .在定义中,当函数没有参数时,那么,这个函数真的没有参数——就像 int sum(void) .它来自 C11 6.7.6.3p14 ,强调我的:

An identifier list declares only the identifiers of the parameters of the function. An empty list in a function declarator that is part of a definition of that function specifies that the function has no parameters. The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied.


您提供的代码无效 - sum不带参数。
所以:
sum(1, 2, 3, 4, 5, 6); // This is also NOT valid

关于c - 在 C 中,如何判断是否提供了函数的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65865874/

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