主要的C++位置

Pwn*_*nna 2 c++

如果我把main放在源文件的顶部并调用一些自定义函数,它会告诉我找不到那些函数,但如果我把main放在源文件的底部,它就可以了.

为什么?是因为编译器从上到下进行解析并打破了main的定义吗?

Ebo*_*ike 15

它与main无关.C++编译器从上到下工作.

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

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

int main() {
   foo();
}

void foo() {
   // Here is your foo implementation.
}
Run Code Online (Sandbox Code Playgroud)

  • @EboMike:请原谅我的法语,这就是废话.C++是一种__multi-paradigm__语言,而OO只是它支持的一种范例.自由函数实际上可以增强封装.使一切成为一个成员函数只是一种语言的实现工件,它缺乏对非成员函数的支持. (7认同)
  • 这有一个C++标志,所以你绝对应该*不*说void main(). (5认同)
  • "前向声明"(当你正在声明一个函数时)的标准术语是**原型**,而***函数应该有一个. (3认同)
  • @EboMike:[在可能的情况下,更喜欢将函数写成非成员非朋友.](http://www.gotw.ca/gotw/084.htm) (3认同)
  • @Ken:"原型"在C++中并不是一个真正的概念.只有一种方法可以声明一个函数,给出它的完整签名,这就是所谓的"声明".省略参数类型的C风格声明无效,因为它们与重载不兼容. (2认同)