2011-10-04 51 views
3

当你写#include "foo.h"我希望编译器检查文件做的,包括(相对于当前目录)第一的目录,如果没有找到,然后退到一个搜索如在#include <foo.h>的情况下的路径列表。规则查找头文件

除非指定了绝对路径,#include "/foo.h",在这种情况下,只有绝对路径,需要进行检查。

是否有任何C语言编译器,其中的规则有什么不同?

+0

我正在使用gcc,但规则是相同的,你已经列出..!我认为包括这些文件是c语言的一部分东西不是吗? –

+1

奇怪的是,语言规范说它是实现定义的。这就是为什么我想检查是否有其他的实现。 – rwallace

+1

哦然后+1给你...可能是一些交叉编译工具链以其他方式做.. !! o/w gcc,sun studio,visual studio,turbo的编译器,都遵循这个规则。 –

回答

3

Kernighan的&里奇写:

[#包括为“foo”]首先搜索与所述原始源文件关联(故意实现相关的短语),并且如果该搜索失败,则如在第一种形式。

这意味着,就行情的搜索策略没有假设。但是,我遇到的所有编译器都共享了首先在包含文件路径中搜索的实践,如果找不到,则回到编译器的搜索路径。