在 C 语言中,函数参数可以具有不同的存储类别(storage class),如 auto、register、static、extern 等。这些存储类别可以影响参数的生命周期和可见性等方面。但是,在函数参数中指定存储类别是不允许的,因为函数参数具有特殊的语义和用途,不需要指定存储类别。
因此,如果您在函数参数中指定了存储类别,编译器可能会给出 "storage class specified for parameter" 类似的错误信息。
例如,下面的代码尝试在函数参数中指定 register 存储类别,将会导致编译错误:
void foo(register int a) { // 错误:不能在函数参数中指定存储类别
// 函数体
为了解决这个错误,您应该移除函数参数的存储类别指定,或者将其转移到函数体内部的局部变量中。
void foo(int a) { // 正确:函数参数不需要指定存储类别
register int b; // 可以在函数体内部指定存储类别
// 函数体
总之,在 C 语言中,函数参数不需要指定存储类别,如果您不小心指定了存储类别,编译器会给出错误信息。