为什么我不能先定义 main(),然后再定义它调用的函数?

发布于 2024-09-12 21:23:54 字数 116 浏览 11 评论 0原文

如果我将 main 放在源文件的顶部并调用一些自定义函数,它会告诉我找不到这些函数,但如果我将 main 放在源文件的底部,它将起作用。

为什么?是不是因为编译器从上到下解析程序并在main的定义处中断?

If I put main on the top of the source file and invoke some custom functions, it will tell me that those functions are not found, but if I put main on the bottom of the source file, it will work.

Why? Is it because the compiler parses the program from top to bottom and breaks at the definition of main?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

镜花水月 2024-09-19 21:23:54

和主线没有关系。 C++ 编译器从上到下工作,就这样。

您引用的任何内容都需要事先声明。变量也是如此。在你的情况下,你可以这样做

void foo();     // <-- Forward declaration, aka prototype

int main() {
   foo();
}

void foo() {
   // Here is your foo implementation.
}

It has nothing to do with main. C++ compilers work top to bottom, period.

Anything that you reference needs to be declared previously. The same goes for variables. In your case, you could do

void foo();     // <-- Forward declaration, aka prototype

int main() {
   foo();
}

void foo() {
   // Here is your foo implementation.
}
岁月打碎记忆 2024-09-19 21:23:54

基本上,是的。您必须先定义/声明一个函数,然后才能使用它。

Basically, yes. You have to define/declare a function before you can use it.

夏天碎花小短裙 2024-09-19 21:23:54

您应该将函数签名放入 main() 之前包含的头文件中。

You should be putting your functions signature into header files that are included before main().

冷情 2024-09-19 21:23:54

如果 main 在自定义函数之前声明,则在解析 main 时,它还没有“看到”它们的任何定义。

If main is declared before your custom functions, by the time main gets parsed it hasn't 'seen' any definitions for them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文