c++编译生成一个.obj的可执行文件,此时会加载预处理和检查语法错误。
链接在编译之后会带走所有的.obj目标文件进行链接,链接会检查用到或者声明的函数是否存在,有趣的是,如果你定义了一个函数a,里面调用的函数b不存在,但实际上你没有用到函数a,此时也会报链接错误,这是因为编译器觉得你在这个文件用不到,但可能会在其他文件用到函数a,所以还是检查了a函数的链接问题,那其实如果我们告诉编译器我只在这个文件用到函数a,其他文件不会用到,那么编译器就不会检查这个文件没有用到的函数的链接问题,那么如何实现呢?
我们可以用static声明函数a,表示只在这个文件用到a,那么编译器就不会因为这个文件里没用到的函数a的链接问题而报错了。