函数中标识符列表和参数列表的区别?
Difference between identifier list and parameter list in function?
对于这句话:
An identifier list in a function declarator that is not part of a
definition of that function shall be empty.
标识符列表和参数列表之间有什么区别,有人可以为此引用提供示例吗?
"identifier list" 仅用于过时的 "K&R style" 函数。今天编写的新代码永远不会使用它。您可以在此处查看更多详细信息:
是这样的:
void func(identifier-list)
declaration-list
{
body
}
当他们说它应该是空的时候,他们的意思是即使承认古代码的可能性,你也不能在没有定义函数的声明中有这个。例如,这是不允许的:
void func(x) int x;
没有标识符定义的标识符列表没有说明函数参数的类型。因此,当函数声明不同时是函数定义时,为函数声明指定标识符列表是没有意义的。
所以引用引用的这个限制被使用了。
这是一个例子
#include <stdio.h>
void f();
int main(void)
{
int x = 10;
f( x );
return 0;
}
void f( x )
int x;
{
printf( "x = %d\n", x );
}
使用参数列表时,编译器可以检查函数调用是否将有效参数传递给函数。所以最好始终使用参数列表而不是标识符列表。
对于这句话:
An identifier list in a function declarator that is not part of a definition of that function shall be empty.
标识符列表和参数列表之间有什么区别,有人可以为此引用提供示例吗?
"identifier list" 仅用于过时的 "K&R style" 函数。今天编写的新代码永远不会使用它。您可以在此处查看更多详细信息:
是这样的:
void func(identifier-list)
declaration-list
{
body
}
当他们说它应该是空的时候,他们的意思是即使承认古代码的可能性,你也不能在没有定义函数的声明中有这个。例如,这是不允许的:
void func(x) int x;
没有标识符定义的标识符列表没有说明函数参数的类型。因此,当函数声明不同时是函数定义时,为函数声明指定标识符列表是没有意义的。
所以引用引用的这个限制被使用了。
这是一个例子
#include <stdio.h>
void f();
int main(void)
{
int x = 10;
f( x );
return 0;
}
void f( x )
int x;
{
printf( "x = %d\n", x );
}
使用参数列表时,编译器可以检查函数调用是否将有效参数传递给函数。所以最好始终使用参数列表而不是标识符列表。