#include<stdio.h>
int recursive(static int a,static int b){
static int c = 100;
if(c != 105){
c++;
a++;
b++;
recursive(a,b);
printf("\n a : %d b : %d \n",a,b);
}
return 0;
}
int main(){
int a = 10;
int b = 1;
recursive(a,b);
}
获取编译错误如下:
error: storage class specified for parameter ‘a’
error: storage class specified for parameter ‘b’
为什么我们不能将函数参数声明为static。上面的程序在参数为int
时传递,编译得很好并给出了预期的输出。
答案 0 :(得分:4)
唯一的存储类说明符是函数参数register
。
参数声明中唯一的存储类说明符是
register
。
答案 1 :(得分:2)
为什么我们不能将函数参数声明为static。
函数参数与本地变量具有相同的存储类。
这就是为什么他们只能拥有自动(堆栈)存储类。
它们也可以具有register
存储持续时间,但是,这只是编译器的非绑定优化提示。