近,有同事向我多次问及C++关于编译链接方面的问题,包括如下: 1:什么样的函数以及变量可以定义在头文件中 2:extern "C"的作用 3:防止重复包含的宏的作用 4:函数之间是怎么链接起来的 我认为,这些问题不难,书上基本上都有,但要是没有真正思考过,凭死记硬背,也是只能“嘴上说说”而已,遇到问题还真棘手,所以我觉得有必要说一下。 C/C++的编译链接过程 其实,“编译”这个词大多数时候,我们指的是由一堆.h,.c,.cpp文件生成链接库或者可执行文件的过程。但是拿C/C++来说,其实这是很模糊的,由一堆C/C++文件生成应用程序包括预处理—编译