假設存在下圖所示的項目目錄結構。ide
若是存在以下包含頭文件的代碼,則大多的項目中須要經過「-I foo」和「-I bar」指明兩個搜索頭文件的目錄。spa
foo.c #include "bar.h"
bar.c #include "foo.h"
然而,當項目規模很大存在不少的目錄時,這種方式將顯著地下降項目的編譯速度。由於「-I」選項使用得越多,意味着編譯每個C文件時所需進行頭文件搜索的目錄也越多。3d
爲了不這一問題,咱們能夠將代碼改成:blog
foo.c #include "bar/bar.h"
bar.c #include "foo/foo.h"
如此一來,整個項目只需一個「-I src」選項就好了。get
促使我意識到這一問題,是由於前段時間看到Blink開源項目的一封郵件,其中談到採用上面的第二種方法後,在Windows上編譯Blink的速度提升了40%。it