由于具有空参数列表的函数可以在C中传递可变数量的参数, 假设我有一个定义为:
的函数void foo(){
// I want to access the parameters passed in here
}
我用论据称之为,
foo(1,2,3);
我可以在foo()函数中保存那些传递参数的值吗?我希望有一些像 $ _这样的东西,这是Perl中的默认变量。
编辑:我期待的行为类似于这个问题所描述的行为:C function with no parameters behavior
答案 0 :(得分:0)
C99:
6.5.2.2函数调用
[...]
- 如果表示被调用函数的表达式具有不包含a的类型 原型,对每个参数执行整数提升,并对其进行参数化 将类型
醇>float
提升为double
。这些被称为默认参数 促销。 如果参数的数量不等于参数的数量,则 行为未定义。
(强调我的。)
因此foo(1,2,3)
具有未定义的行为。它甚至不能保证进入函数体,更不用说让你访问额外的参数了。
答案 1 :(得分:0)
未定义的行为
也许你需要Variadic Arguments