strtolの引数を忘れてしまった
C言語プログラミングをしていて、関数の引数の順番などを忘れてしまった時、ネットで検索するのも良いですが、せっかくLinux/Unixを使っているなら、手元の情報から探したいものです。
例えばstrtolを使おうとしているのに引数を忘れてしまった場合、どこから探せばよいでしょうか。
やはり一番早いのは、マニュアルでしょう。
~$ man strtol
マニュアルではなく、訓練のためにあえてヘッダから探したい、って人もいるかもしれません。そういう場合は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, ~$
コメント