C関数宣言がどのヘッダファイルにあるかを見つける簡単な方法はありますか?cd
ing into/usr/include
とrun(grep -E 'system.*\(' *.h -R
)には少し試行錯誤が必要ですが、これを行うより簡単な方法はありませんか?
答え1
$ man 2 read
...
READ(2) Linux Programmer's Manual READ(2)
NAME
read - read from a file descriptor
SYNOPSIS
#include <unistd.h>
...
答え2
システムからヘッダーファイルを検索すると、関数が宣言されたシステムのヘッダーファイルにあります。時には関数が複雑なマクロを通して宣言されるので、これは難しいかもしれません。どのヘッダファイルが関数を宣言しているかを教えてくれます。あなたのシステムこれは、他のヘッダーを最初に含める必要があるため、直接含めることができないヘッダーかもしれません。
含めるヘッダーファイルを見つける唯一の安全な方法は、その機能を提供するライブラリのドキュメントを参照することです。標準ライブラリの場合は、以下を参照できます。
- C規格(C89=C90、C99またはC11)は、Cが実行されているすべてのプラットフォームで利用可能な機能を定義します。
- これPOSIX/シングルUnix標準(POSIX:2004、POSIX:2008)は、各UNIXシリーズプラットフォームで利用可能な機能を定義します。
- あなたのプラットフォームには他の機能があるか、追加機能を提供できます。マンページ(
man 3 function_name
またはman 2 function_name
- の違い)を参照してください。2と3主に歴史的)または他の文書(例:GNU libc マニュアルLinuxで)。