C

如何找到定義ac函式的標頭檔?

  • February 21, 2012

有沒有一種簡單的方法可以找出 C 函式聲明在哪個標頭檔中?cd進入/usr/include並執行 ( grep -E 'system.*\(' *.h -R) 可以進行一些試驗和錯誤,但沒有更簡單的方法可以做到這一點嗎?

$ man 2 read

READ(2)                    Linux Programmer's Manual                   READ(2)

NAME
      read - read from a file descriptor

SYNOPSIS
      #include <unistd.h>
...

如果您在系統上的標頭檔中搜尋,您將在系統上聲明該函式的標頭檔中找到。這可能很困難,因為有時函式是通過複雜的宏聲明的。它只會告訴你係統上的哪個標頭檔聲明了該函式;這甚至可能是一個你不能直接包含的標頭檔,因為它需要其他標頭檔在前。

查找要包含的標頭檔的唯一安全方法是查閱提供該函式的庫的文件。對於標準庫,可以參考:

  • C 標準C89=C90C99C11)定義了在每個執行 C 的平台上都可用的函式。
  • POSIX /Single Unix 標準(POSIX:2004POSIX:2008)定義了在每個類 unix 平台上都可用的函式。
  • 您的平台可能具有其他功能或可能提供附加功能。查閱它的手冊頁(man 3 function_name或者——2 和 3man 2 function_name之間的區別主要是歷史性的)或其他文件(例如 Linux 上的GNU libc 手冊)。

引用自:https://unix.stackexchange.com/questions/32213