web-dev-qa-db-ja.com

ctype.hはシステムにインストールされていますか?

16.04を実行しています。私のCプログラムはisdigit(int)を使用しています。 gdbで実行すると、次のメッセージが表示されます。

`Breakpoint 1, check_tok (token=0x6f7c20 <tokens> ".t") at outline.c:150
150 unsigned char *tp=token;
(gdb) s
151     if(isdigit(*tp))return NUM;
(gdb) 
__ctype_b_loc () at ../include/ctype.h:38
38  ../include/ctype.h: No such file or directory.
(gdb) 

私はすでに実行しています:

Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get install build-essential

`outline.cでgccを実行しても警告は表示されません。私のプログラムの一番上には:

#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include "outline.h"

上記のエラーはgdbでのみ表示されます。

何が起こっている?ありがとうございました。

1

問題は、プログラムをコンパイルするためにctype.hが必要なため、ctype.hがないことです。あなたの場合、それはgdbがインクルードを見つける方法に依存します。 「locate ctype.h」を使用して、gdb内にinclude-directoryを次のように設定する必要があるかもしれません。

 set substitution-path/usr/src/include /mnt/include

こちらをご覧ください: https://sourceware.org/gdb/onlinedocs/gdb/Source-Path.html

2
0x0C4