gpt4 book ai didi

c++ - int main() 是否需要在 C++ 上声明?

转载 作者:IT老高 更新时间:2023-10-28 13:20:41 25 4
gpt4 key购买 nike

我被告知函数需要声明才能被调用。为了说明,下面的例子会给我一个错误,因为函数 sum 没有声明:

#include <iostream>

int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}

int sum(int x, int y) {
return x + y;
}

// main.cpp:4:36: error: use of undeclared identifier 'sum'
// std::cout << "The result is " << sum(1, 2);
// ^
// 1 error generated.

为了解决这个问题,我会添加声明:

#include <iostream>

int sum(int x, int y); // declaration

int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}

int sum(int x, int y) {
return x + y;
}

为什么 main 函数不需要声明,而 sum 等其他函数则需要?

最佳答案

函数的定义也是函数的声明。

声明函数的目的是让编译器知道它。声明一个函数而不定义它允许在不方便定义它的地方使用函数。例如:

  • 如果在源文件(A)中使用了一个函数,而不是在(B)中定义的那个,我们需要在A中声明它(通常通过A包含的头文件,例如B.h)。
  • 如果两个或多个函数可以相互调用,那么我们不能在其他函数之前定义所有这些函数——其中一个必须是第一个。因此可以先提供声明,然后再提供定义。
  • 许多人喜欢将“更高级别”的例程放在源文件中的较早部分,然后将子例程放在后面。由于这些“更高级别”的例程调用各种子例程,因此必须更早地声明这些子例程。

在 C++ 中,用户程序从不调用 main,因此它从不需要在定义之前进行声明。 (请注意,如果您愿意,可以提供一个。在这方面,main 的声明没有什么特别之处。)在 C 中,程序可以调用 main。在这种情况下,它确实要求在调用之前声明是可见的。

请注意,调用它的代码确实需要知道 main。这是通常称为 C++ 运行时启动代码的特殊代码。当您使用适当的链接器选项链接 C++ 程序时,链接器会自动为您包含该代码。无论该代码是用什么语言编写的,它都具有正确调用它所需的任何 main 声明。

关于c++ - int main() 是否需要在 C++ 上声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55457704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com