C、C++编译,链接,extern链接

 1 //b.cpp
 2 
 3 #inlcude <iostream>
 4 
 5 void b()
 6 {
 7     std::cout<<"fun b";
 8 }
 9 
10 //a.cpp
11 extern void b();
12 
13 int main()
14 {
15     b();
16     return 0;
17 }
18 
19 //makefile
20 testA: a.o b.o
21     g++ -o testA a.o b.o
22 
23 clean:
24     rm testA a.o b.o

b.cpp 和 a.cpp之间没有任何联系,编译时可以分别编译通过生成a.o和b.o,链接时a.o中的b()没有定义,编译器自动的从b.o中查找到。

这里简单的体现了C语言的单独编译,相互链接的过程,即单独生成“.o”文件,共同生成执行文件。

原文地址:https://www.cnblogs.com/kevinGaoblog/p/3865227.html