为什么在函数定义中的形式参数中不能使用auto,static关键字?

时间:2016-06-11 08:20:05

标签: c

编译器 - Mingw gcc 操作系统 - Windows 10

声明1:

void fun(auto int a){} // statement 1 - Error!

声明2:

void fun(static int a){} // statement 2- Error!

陈述3:

static void fun(auto int a){} //statement 3- Error!

陈述4:

void fun(register int a){} // statement 4-No error(Valid)

为什么语句1,2和3生成编译时错误但语句4不生成?

在函数中的形式参数中使用auto时有什么问题?

以下是错误输出:

错误:为参数'a'指定的存储类   void fun(auto int a)

2 个答案:

答案 0 :(得分:3)

因为标准是这样说的。见 6.7.6.3p2

  

参数声明中唯一的存储类说明符是[i]

存储类说明符通常对函数参数没有意义。

答案 1 :(得分:1)

requires: [] 关键字在该程序中所做的全部是它告诉编译器(基本上)'嘿,我在这里有一个变量,我不希望任何其他人访问,不要告诉其他人它存在”。

  

唯一存在于参数中的存储类说明符   声明是注册。

强文