我创建了一个包含三个文件的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()
没有调用它?
答案 0 :(得分:0)
现在我知道在函数外声明的任何变量都是全局变量,尽管它在另一个* .cpp文件中。因此,int i=sayHello();
行将在调用main()
之前执行。
答案 1 :(得分:0)
在编译程序之后,变量被初始化。作为其中的一部分,它在调用int main()之前调用int i=sayHello();
。
希望这有帮助!