为什么main函数可以调用并运行其他cpp文件的功能?

时间:2017-11-25 11:45:55

标签: c++

我创建了一个包含三个文件的C ++项目test,如下所示: hello.hpp:

#ifndef HELLO_H
#define HELLO_H
int cHelloSay();
#endif 

HELLO.CPP:

#include "hello.hpp"
#include<iostream>
int sayHello(){
    std::cout << "123";
}
int i=sayHello();

和main.cpp:

#include "hello.hpp"
int main(int argc, char** argv) {
    return 0;
}

然后我编译这个项目并输出:123。所以我很困惑为什么行int i=sayHello();被执行虽然main()没有调用它?

2 个答案:

答案 0 :(得分:0)

现在我知道在函数外声明的任何变量都是全局变量,尽管它在另一个* .cpp文件中。因此,int i=sayHello();行将在调用main()之前执行。

答案 1 :(得分:0)

在编译程序之后,变量被初始化。作为其中的一部分,它在调用int main()之前调用int i=sayHello();

希望这有帮助!