使用C中的空参数列表访问传递给函数的参数

时间:2017-12-02 10:43:51

标签: c ansi-c kr-c

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

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

我用论据称之为,

foo(1,2,3);

我可以在foo()函数中保存那些传递参数的值吗?我希望有一些像 $ _这样的东西,这是Perl中的默认变量。

编辑:我期待的行为类似于这个问题所描述的行为:C function with no parameters behavior

2 个答案:

答案 0 :(得分:0)

C99:

  

6.5.2.2函数调用

     

[...]

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

(强调我的。)

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

答案 1 :(得分:0)

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