C++;函数原型a\和变量名仅与数据类型相对 < >在C++中声明函数原型时,下面有不同: void SomeFunction( int Argument ) { //Stuff }

C++;函数原型a\和变量名仅与数据类型相对 < >在C++中声明函数原型时,下面有不同: void SomeFunction( int Argument ) { //Stuff },c++,function,prototype,C++,Function,Prototype,对 void SomeFunction( int ) { //Stuff } 本质上,我要问的是,为什么要在函数原型中编写变量参数名称,而不仅仅是数据类型?您不必在定义中或声明中编写参数名称。如果你这样做了,它们甚至不需要是一样的。如果计划实际使用参数,则必须编写一个。如果实际要使用参数,则需要参数名称。某些编译器(例如Microsoft VC++)会在您命名参数但不在函数中的任何位置使用时发出警告 另外,您在示例中使用的不是原型,而是实际的函数定义。在原型中,参数名完全是可选的。

void SomeFunction( int ) 
{
    //Stuff
} 

本质上,我要问的是,为什么要在函数原型中编写变量参数名称,而不仅仅是数据类型?

您不必在定义中或声明中编写参数名称。如果你这样做了,它们甚至不需要是一样的。如果计划实际使用参数,则必须编写一个。

如果实际要使用参数,则需要参数名称。某些编译器(例如Microsoft VC++)会在您命名参数但不在函数中的任何位置使用时发出警告


另外,您在示例中使用的不是原型,而是实际的函数定义。在原型中,参数名完全是可选的。

函数声明中的编译器不需要参数名。它是供人食用的。它们提供有关函数正在执行的操作的附加信息。好的函数名加上好的参数名可以作为方法的即时文档

关于“声明”和“定义”区别的补充意见。 两个示例都是定义:

void SomeFunction( int Argument ) 
{
    //Stuff
} 
原型将是一个声明,如下所示:

void SomeFunction( int ) ;
void SomeFunction( int Argument ) 
{
    Argument = Argument + 1;
} 
因此,您可以在头中有一个如上所述的声明。然后在cpp中定义如下函数:

void SomeFunction( int ) ;
void SomeFunction( int Argument ) 
{
    Argument = Argument + 1;
} 

正如您所见,声明没有指定参数名,但定义随后确实指定并使用了参数名。

函数原型不需要参数名,但需要变量的类型。以下各项均有效:

void function(int);

void function(int param);
使用原型可以按任意顺序定义函数。但是,如果要查看参数名称(如将鼠标悬停在函数上时),则名称必须在原型中。如果没有原型,您将看到定义中的名称

如果没有原型,函数定义可以兼作声明,但必须在调用函数之前定义。当然,将使用定义中的变量名

参数在定义中必须有名称,但在原型中名称是可选的