首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

“在不是函数定义的结成部分的函数声明符中的标识符表应为空”这句的意思

2013-11-23 
“在不是函数定义的组成部分的函数声明符中的标识符表应为空”这句的意思?C89中文版6.5.4.3章节里面的,[解决

“在不是函数定义的组成部分的函数声明符中的标识符表应为空”这句的意思?
C89中文版6.5.4.3章节里面的,


“在不是函数定义的结成部分的函数声明符中的标识符表应为空”这句的意思
[解决办法]
An identifier list in a function declarator that is not part of a function definition shall be empty.
[解决办法]
翻译错了吧;
形参存储类型由调用约定和具体实现决定,而不是存储类型决定。

[解决办法]
意思不就是“函数声明时,除函数名外,其它标识符都应该为空”吗?
[解决办法]

引用:
Quote: 引用:

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


6.5.4.3 
第3句,
能在形参声明中。。。。。 register
有没有翻译错误?

[解决办法]
引用:
意思不就是“函数声明时,除函数名外,其它标识符都应该为空”吗?

++
意思就是,就当这些标识符不存在。
只有函数名,和数据类型,才是函数声明所需要的。
形参的变量名字,是不必要的。
[解决办法]
函数定义时,形参的名字,才是有意义的。
函数声明中,形参的名字,是不必要的。

shall 在这里,应该是可以的意思吧。
[解决办法]
即使在函数定义中,形参的标识符也不是必须的。
[解决办法]
引用:
Quote: 引用:

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;
}

热点排行