2014-02-24 85 views
1

我知道,使用#include <file>時,編譯器將在定義的系統目錄中搜索file。我如何查看這些目錄?如何查看#包含<>目錄

我問,因爲我添加了一堆頭文件到/ usr/local/include的目錄,當我#include <file>編譯器仍然說error: unknown type name ‘TPM_TAG’。我懷疑/ usr/local/include不在編譯器的目錄列表中進行搜索。

謝謝!

+4

如果找不到文件,則會發生致命錯誤,因此不是問題 – aaronman

+0

您可以使用'-I'標誌來傳遞包含目錄。 – devnull

+0

他可能仍然在/ usr/include中包含頭文件的實例,而在/ usr/local/include中包含更新的版本。 –

回答

0

這取決於您是否使用標準標頭或本地用戶定義標頭。也許嘗試使用#include「文件」,並使頭文件本地,而不是看看是否可行?

0
gcc -I. yourfile.c 

-I介紹include files路徑,所以,如果你有一些包含文件在子目錄如排序/列表/等等,你應該表現爲shuch:

gcc -I. -I./list -I./sort myfile.c 

注: 請考慮使用""作爲頭文件,並使用<>作爲系統頭文件。例如:

#include <iostream> 
#include "myheader.h" 
+0

他不是問如何包含某個文件,而是如何查看編譯器在使用'#include '指令包含文件時搜索的目錄 – Praetorian

0

編譯器附帶了許多依賴於其確切配置的*.h文件。看看這個question了。說服GCC /鐺擁有一個通用的做法是:

echo | gcc -E -Wp,-v - 

(根據需要用clang取代gcc)。

1

您可以根據編譯器不同的方式搜索,用gcc例如,它可以檢查編譯器在哪裏查找文件使用

gcc -print-search-dirs 

,或者您可以通過選項gcc -H編譯C文件,例如與gcc -H -c myfile.c