(Linux)C言語のヘッダを知りたければ/usr/includeを見ればいい

11-1.ドキュメント・マニュアル

strtolの引数を忘れてしまった

C言語プログラミングをしていて、関数の引数の順番などを忘れてしまった時、ネットで検索するのも良いですが、せっかくLinux/Unixを使っているなら、手元の情報から探したいものです。
例えばstrtolを使おうとしているのに引数を忘れてしまった場合、どこから探せばよいでしょうか。
やはり一番早いのは、マニュアルでしょう。

~$ man strtol

man-001

マニュアルではなく、訓練のためにあえてヘッダから探したい、って人もいるかもしれません。そういう場合はgrepでヘッダファイルを直接読みましょう。C言語のヘッダは、/usr/includeの下に格納されています。

~$ grep -A1 'extern.*strtol\>' /usr/include/stdlib.h
extern long int strtol (const char *__restrict __nptr,
			char **__restrict __endptr, int __base)
~$ 

手元の環境では、/usr/includeの下にこのようなヘッダが格納されていました。

/usr/include/stdio.hprintf他
/usr/include/linux/stddef.hNULL他
/usr/include/stdlib.hsrand他
/usr/include/string.hmemcpy他
/usr/include/time.htime、tm他
/usr/include/setjmp.hsetjmp他
/usr/include/assert.hassert他
/usr/include/limits.hULONG_MAX他
/usr/include/locale.hsetlocale,lconv他
/usr/include/signal.hsignal他
/usr/include/ctype.htolower他
/usr/include/errno.herrno他
/usr/include/asm-generic/errno-base.hEPERM他
/usr/include/math.h pow等
/usr/include/wchar.hfgetws他
/usr/include/wctype.htowlower、iswalpha他
/usr/include/complex.hcacos他
/usr/include/inttypes.hstrtoimax他
/usr/include/stdint.hint32_t他
/usr/include/fenv.hfgetenv他

 
ヘッダの場所が分かっているので、索引を作ってもよいかもしれません。

~$ (cd /usr/include;grep -r extern *) > index
~$ vi list
~$ f(){
grep $1 index
}

使い方は、引数に関数名を指定するだけです。

~$ f sprintf
X11/Intrinsic.h:extern Cardinal XtAsprintf(
i386-linux-gnu/bits/stdio2.h:extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
i386-linux-gnu/bits/stdio2.h:extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
i386-linux-gnu/bits/stdio2.h:extern int __asprintf_chk (char **__restrict __ptr, int __flag,
i386-linux-gnu/bits/stdio2.h:extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
stdio.h:extern int sprintf (char *__restrict __s,
stdio.h:extern int vsprintf (char *__restrict __s, const char *__restrict __format,
stdio.h:extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
stdio.h:extern int __asprintf (char **__restrict __ptr,
stdio.h:extern int asprintf (char **__restrict __ptr,
~$

コメント

タイトルとURLをコピーしました