2011-10-04 69 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」]首先搜索與所述原始源文件關聯(故意實現相關的短語),並且如果該搜索失敗,則如在第一種形式。

這意味着,就行情的搜索策略沒有假設。但是,我遇到的所有編譯器都共享了首先在包含文件路徑中搜索的實踐,如果找不到,則回到編譯器的搜索路徑。