函数中标识符列表和参数列表的区别?

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

使用参数列表时,编译器可以检查函数调用是否将有效参数传递给函数。所以最好始终使用参数列表而不是标识符列表。