0

由于具有空参数列表的函数可以在 C 中传递可变数量的参数,假设我有一个定义为的函数:

void foo(){
// I want to access the parameters passed in here
}

我用参数来称呼它,比如说

foo(1,2,3);

我有可能在我的 foo() 函数中获取那些传递参数的值吗?我希望有一些类似于$_ 的东西,Perl 中的默认变量。

编辑:我期望的那种行为就像这个问题中描述的那样:C function with no parameters behavior

4

2 回答 2

0

未定义的行为
也许你需要Variadic Arguments

于 2017-12-02T14:40:05.280 回答
0

C99:

6.5.2.2 函数调用

[...]

  1. 如果表示被调用函数的表达式的类型不包含原型,则对每个参数执行整数提升,并将具有类型的参数float提升为double. 这些被称为默认参数提升如果参数的数量不等于参数的数量,则行为未定义。

(强调我的。)

因此foo(1,2,3)具有未定义的行为。甚至不能保证进入函数体,更不用说让你访问额外的参数了。

于 2017-12-02T10:50:39.847 回答