[解决办法] An identifier list in a function declarator that is not part of a function definition shall be empty. [解决办法] 翻译错了吧; 形参存储类型由调用约定和具体实现决定,而不是存储类型决定。
An identifier list in a function declarator that is not part of a function definition shall be empty.
没发现翻译错了。这个是GB上,翻译了英文版C89的。 An identifier list 一个标识符列表 in a function declarator that is not part of a function definition 不是函数定义部分的那些函数声明 shall be empty
参阅4楼, 函数声明时,不需要列出形参的标识符,只列出每个形参的数据类型即可 [解决办法] An identifier list in a function declarator that is not part of a function definition shall be empty. 一个 标识符 列表 在 一个 函数 声明 那个 是 不 部分 的 一个 函数 定义 应该 是 空. 函数声明时(即函数原型中),除函数名外,其它标识符都应该为空。 [解决办法]
即使在函数定义中,形参的标识符也不是必须的。
++ 函数定义中,虽然不是必须的,用到的那个必须有名字。 除非不确定参数列表那种。 [解决办法]
/* C89的函数声明有两种形式
int fun1(int x, int y) // D(形参类型表)
int fun2(x, y) // D(任选的标识符表) int fun2() // D(任选的标识符表)
如果func2(x, y)不是函数定义 int func2(x, y) int x, int y; { return x + y; } 的一部分的话;
那么就标识符表应该为空 int func2(); */
/* * 这句话描述的是K&R风格的函数声明和定义 */ /* 函数声明为 */ int func2(); /* 标识符表为空 */ /* 函数定义为 */ int func2(x, y) /* 标识符表不为空 */ int x, int y; { return x + y; }
/* * C99已经废除了这种写法了 * 现在大家使用的是这种写法 */ /* 声明 */ int fun1(int x, int y); /* 声明中的参数标识符x, y 可以省略 */ /* 定义 */ int fun1(int x, int y) { return x + y; }