2010-03-03 62 views
8

給定一個函數,讓我們說atoi,如果我想使用這個函數,如何找到我應該包含的頭文件?我總是對這個問題感到困惑。如果讓我把「atoi」這樣的函數當作linux c api,我可以用另一種方式來表達我的問題:是linux c api的文檔嗎?如何在Linux中找到要包含在庫函數中的頭文件

+2

請參閱男子或信息和apropos apropos在此給出您要使用的手冊頁部分。 – 2010-03-03 22:06:41

回答

12

Man pages。在您的命令提示符處鍵入man atoi(或者,通常,man <function>)。它會爲您提供使用信息以及要包含哪些標題的列表。

手冊頁還記錄程序和命令(find,grep,cd等)。有時您可能會遇到程序與C函數具有相同名稱(例如寫入)的情況。在這種情況下,您需要引導人員查看手冊的正確部分,第2部分是系統調用,第3部分是庫函數。通過在「man」和命令名稱man 2 write之間插入節號來完成此操作。如果您不知道給定的函數是系統調用還是庫函數,請嘗試這兩種方法。

通過輸入man man可以瞭解更多關於手冊頁的信息。

+2

+1附註:在某些平臺上,您可能需要安裝這些軟件包(例如:對於Ubuntu的'manpages-posix-dev'(頭文件)和'manpages-dev'(函數)) – ChristopheD 2010-03-03 22:25:31

1
是linux c api的文檔嗎?

當然可以。該文檔可作爲手冊頁。在終端輸入man <function>並享受。您需要包含哪個頭文件通常顯示在頂部。

1

如果您正在使用ctags和vim編輯器,並且您已設置ctags來掃描/ usr/include,然後按Ctrl-],而您正在查找的函數將帶您到標題文件!

0

您可以使用下面還

whereis <function name> 

它會給路徑名的功能。然後使用vim編輯器打開路徑。然後使用「vim」編輯器可以看到頭文件。

> whereis atoi 
    atoi: /usr/share/man/man3/atoi.3.gz 

> vim /usr/share/man/man3/atoi.3.gz 

    ---------- 
    ---------- 
    .B #include <stdlib.h> 
+1

這似乎是一個複雜的方式來做'人atoi'。 – bfontaine 2014-04-10 21:58:14

+0

如上所述過於複雜。 – haziz 2015-04-05 00:05:50

2

或者,你可以搜索你的系統的/ usr/include目錄你正在尋找的函數定義的事件目錄。這對於缺少手冊頁的嵌入式或精簡版Linux系統特別有用。

find /usr/include -name "*.h" -print | xargs grep "<function-you-are-looking-for>" 

例如,如果你這樣做:

find /usr/include -name "*.h" -print | xargs grep atoi 

你會得到這樣的事情:

/usr/include/stdlib.h:extern int atoi (__const char *__nptr) 

結果既包含頭文件名和接口定義。

  • 請注意,您的/ usr/include目錄可能位於其他位置。
+1

也注意到許多事情都是在公共頭文件包含的系統特定的(有時是特定於內核版本的)私有頭文件中定義的,所以通過grep進行搜索並不會讓你得到正確的答案。 – 2013-04-29 15:42:01

相關問題