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

プログラミングをしていて、関数の引数の順番などを忘れてしまった時、ネットで検索するのも良いですが、せっかく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.h printf他
/usr/include/linux/stddef.h NULL他
/usr/include/stdlib.h srand他
/usr/include/string.h memcpy他
/usr/include/time.h time、tm他
/usr/include/setjmp.h setjmp他
/usr/include/assert.h assert他
/usr/include/limits.h ULONG_MAX他
/usr/include/locale.h setlocale,lconv他
/usr/include/signal.h signal他
/usr/include/ctype.h tolower他
/usr/include/errno.h errno他
/usr/include/asm-generic/errno-base.h EPERM他
/usr/include/math.h  pow等
/usr/include/wchar.h fgetws他
/usr/include/wctype.h towlower、iswalpha他
/usr/include/complex.h cacos他
/usr/include/inttypes.h strtoimax他
/usr/include/stdint.h int32_t他
/usr/include/fenv.h fgetenv他

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

~$ (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,
~$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA