web-dev-qa-db-ja.com

c関数が定義されているヘッダーファイルを見つける方法

C関数宣言が含まれているヘッダーファイルを見つける簡単な方法はありますか? cding into /usr/includeおよび実行中(grep -E 'system.*\(' *.h -R)いくつかの試行錯誤で動作しますが、これを行う簡単な方法はありませんか?

6
$ man 2 read

...

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

NAME
       read - read from a file descriptor

SYNOPSIS
       #include <unistd.h>
 ...

システムのヘッダーファイルを検索すると、関数がシステムで宣言されているヘッダーファイルがわかります。関数が複雑なマクロを介して宣言される場合があるため、難しい場合があります。また、yourシステムで関数を宣言しているヘッダーファイルだけがわかります。これは、最初に他のヘッダーが必要になるため、直接含めることができないヘッダーファイルである場合もあります。

含めるヘッダーファイルを見つける唯一の安全な方法は、関数を提供するライブラリのドキュメントを参照することです。標準ライブラリについては、以下を参照できます。

  • C標準C89 = C9C99 または C11 )は、Cを実行するすべてのプラットフォームで使用可能な関数を定義します。
  • [〜#〜] posix [〜#〜] /単一のUnix標準( POSIX:2004POSIX:2008 )は、すべてのUNIXライクなプラットフォームで利用できます。
  • お使いのプラットフォームには他の機能がある場合や、追加の機能を提供している場合があります。マニュアルページを参照してください(man 3 function_nameまたはman 2 function_name2と の違いは主に歴史的です)またはその他のドキュメント(例:Linuxの GNU libcマニュアル )。