Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 主功能第1行的术语是什么?_C++_C_Terminology - Fatal编程技术网

C++ 主功能第1行的术语是什么?

C++ 主功能第1行的术语是什么?,c++,c,terminology,C++,C,Terminology,如附件快照中突出显示的,主要功能的起始线,我知道它是主要功能的起始点,但它的正确术语是什么?我们可以称之为功能声明线吗? 这一行 int main() 在函数定义中(同时也是函数声明)称为函数声明器,其返回类型(类型说明符)int 这就是整个代码片段 int main() { //... } 是在文件范围中引入标识符main的函数声明 注意,根据C标准,main中不接受参数的函数声明符应声明为 int main( void ) 我不知道C,但下面是C++23草案中的一些片段: 示

如附件快照中突出显示的,主要功能的起始线,我知道它是主要功能的起始点,但它的正确术语是什么?我们可以称之为功能声明线吗? 这一行

int main()
在函数定义中(同时也是函数声明)称为函数声明器,其返回类型(类型说明符)
int

这就是整个代码片段

int main()
{
    //...
}
是在文件范围中引入标识符
main
的函数声明

注意,根据C标准,main中不接受参数的函数声明符应声明为

int main( void )

我不知道C,但下面是C++23草案中的一些片段:

示例1:完整函数定义的一个简单示例是

int max(int a, int b, int c) {
  int m = (a > b) ? a : b;
  return (m > c) ? m : c;
}
这里
int
decl说明符seq
max(inta,intb,intc)
声明符;{/*…*/}是函数体。-[结束示例]

因此,在
int main()
中,我们得到
int
是decl说明符seq,
main()
是声明符

我们还有另一个例子(很抱歉只找到例子):

[例5:宣言

int fseek(FILE*, long, int);
声明一个函数,该函数接受指定类型的三个参数,并返回
int
[dcl.type]
)。-结束示例]


(虽然不是形式),我推断DECL说明符SEQ和声明符的组合使得<代码> int()//> >部分A<强>声明< /强> ./p>

。C和C++中有两个术语共享一个常用用法,不幸的是经常会互相混淆。术语是声明定义

声明告诉编译器程序中的某个地方存在某种东西(名称)。定义是所声明事物的实现

对于函数,可以同时拥有声明和定义

例如,假设您的程序有一个名为
foo
的函数,取一个
int
参数并返回一个
int
值。可声明为:

int foo(int arg);
该函数的声明也称为声明函数的原型。在调用函数之前需要有这个声明,否则编译器将不知道它的存在。声明之后,可以调用函数,编译器不需要查看函数的完整实现,只需查看声明即可

然后我们有了定义,在这里我们实现了功能:

int foo(int arg)
{
    return arg * 2;
}
现在让我们看另一个函数
bar
,它不带参数也不返回值。它没有以前的声明,只有一个定义:

void bar(void)
{
    // Does something here...
}
但是因为在定义之前没有现有的声明,所以定义也是声明


也注意到,当函数声明时,C和C++之间存在很大的差异。 在C语言中,不带参数的函数必须使用参数类型

void
。不指定任何参数:

void some_function();
实际上,将函数
some_function
声明为具有不确定类型的不确定数量的参数。当第一次调用时,或者当它找到另一个指定参数的声明(或定义)时,C编译器将填充缺少的参数详细信息

C++中,这样的声明声明函数不带任何参数。


<>这只是C和C++之间的一个区别,这也是我们很多人不喜欢用两种语言来标记问题的原因,或者“C/C++”一词。

< P>简单地说,函数声明方法只是声明函数名、它的参数和返回类型。 e、 g

函数定义意味着您实际上正在定义功能。 e、 g

给定的main()函数是函数定义

一般来说,出于常规目的,您可以将函数定义的第一行称为“函数头”


函数定义中花括号{}内的整个代码称为“函数体”。

函数签名是您要查找的术语吗?
main
也称为入口点?您正在寻找:函数
main
的定义。我认为没有合适的车道。最接近的可能是函数声明?但这肯定不是声明行。该声明可以很容易地分成多行,定义也可以是第一行的一部分。C++不太关心线条,它没有专门的标准名称。在C和C++语法中,它由多个部分组成,语法中没有任何东西区分<代码> int()/<代码>部分。您可以将其称为函数定义的一部分,而不使用主体。但你为什么要这么做?这不是一个反问句;如果你在寻找术语,可能你想和某人交流一些东西。什么?沟通的目的可能是为了说明沟通的良好措辞。
main()
是声明符
int
是一个说明符,不是声明符的一部分。@IanAbbott我明白了。这就是使用多语言标记的危险。我没有注意到它有一个C标记(我不订阅C问题)。更正我(已删除)的评论:C标准使用了稍微不同的术语:
int
是声明说明符,
max(inta,intb,intc)
是声明符,
{…}
是复合语句。@ianabott明白了!我将编辑并明确指出,我的答案只适用于C++。这个答案不与被问的问题(函数定义的特定部分的术语)有关。
int foo(int x, int y);  ==> Function declaration ends with semicolon ;
int foo(int x, int y){
      return x+y;
}  ==> Function definition enclosed within curly braces { }