On 6 May 1999 01:19:13 GMT, RaMzEyMe wrote
>在预处理器中
> include "file" 和 include <file>
>有什么区别?
我来给你画个图。
+-----------------------------------------------+ | | | +--------------------------+ | | | places searched | | | | for <> includes | | | +--------------------------+ | | places searched for "" includes | +-----------------------------------------------+
助记符:双引号<>提示了封闭。
根据语言标准,C 实现会以两种不同的“位置”搜索头文件,如果它们是使用""包含的。它首先在一个位置查找,如果找不到头文件,它会查找另一个位置。
使用<>包含的头文件只会在第二个位置被搜索。
想象一下,上面的图是从外向内访问的。
在实际实现中,这通常是这样的:使用""包含的头文件会首先在其父文件(包含#include的那个)所在的位置查找。如果找不到,就会搜索一些预定义的路径;通常是包含随实现一起提供的头文件的目录。
各种编译器有各种影响行为的方式,这导致一些程序员以各种巧妙的方式组织他们的项目,例如将包含文件与源文件分开。有时人们甚至会影响编译器使用<>来搜索他们自己的
最可移植的做法是使用""来包含项目中的文件,而使用<>仅用于实现提供的文件。此外,至少对于小型到中等规模的项目,最简单的方法是将所有文件收集在一个地方(即一个目录)。这样可以最大限度地减少构建管理和可移植性的麻烦。