如何查找丢失的C头文件(没有Internet)?

如何查找丢失的C头文件(没有Internet)?,c,header-files,C,Header Files,我刚才犯了一个错误: main.c:8: error: implicit declaration of function ‘malloc’ main.c:8: error: incompatible implicit declaration of built-in function ‘malloc’ main.c:14: error: implicit declaration of function ‘printf’ main.c:14: error: incompatible implicit

我刚才犯了一个错误:

main.c:8: error: implicit declaration of function ‘malloc’
main.c:8: error: incompatible implicit declaration of built-in function ‘malloc’
main.c:14: error: implicit declaration of function ‘printf’
main.c:14: error: incompatible implicit declaration of built-in function ‘printf’
因为我以前犯过这些错误,我知道我忘了添加

#include <stdlib.h>
#include <stdio.h>
#包括
#包括
谷歌搜索很快就会发现丢失的标题

但如果我没有互联网,我会怎么做?如何找到丢失的头文件?

apropos
man
apropos[text]
可以搜索man文件,例如:

$apropos malloc
__malloc_钩子(3)-malloc调试变量
malloc(3)-分配和释放动态内存
malloc_钩子(3)-malloc调试变量
mtrace(1)-解释MALLOC_跟踪的输出
mtrace(3)-malloc调试
muntrace(3)-malloc调试
XtMalloc(3)-内存管理功能
然后,您可以查看手册页:

$man malloc
名称
calloc,malloc,free,realloc-分配和释放动态内存
提要
#包括
void*calloc(size\u t nmemb,size\u t size);
void*malloc(大小);
无空隙(空隙*ptr);
void*realloc(void*ptr,size\u t size);
描述
calloc()为大小为字节的nmemb元素数组分配内存
每个和返回一个指向已分配内存的指针。内存已设置
这表明缺少
#include

find
grep
如果
apropos
不起作用,如以下示例所示,您可以使用
find
grep
搜索所有源文件:

/#包括“stdint.h”
#包括
main(){
int8_t*xy=(int8_t*)1;
printf(“%p\n”,xy);
}
test.c:在函数“main”中:
test.c:4:错误:“int8\u t”未声明(此函数首次使用)
测试c:4:错误:(每个未声明的标识符只报告一次
test.c:4:错误:对于它出现在中的每个函数。)
test.c:4:错误:“xy”未声明(首次在此函数中使用)
test.c:4:错误:在“')标记之前应该有表达式
解决方案:

moose@pc07:/usr/include$ find *.h | xargs grep "int8_t"
db.h:   u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
db.h:   u_int8_t *bp;           /* Allocated read buffer. */
db.h:   u_int8_t            /* Unique file ID. */
db.h:   int (*get_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
db.h:   int (*set_fileid) __P((DB_MPOOLFILE *, u_int8_t *));
db.h:   int   (*prepare) __P((DB_TXN *, u_int8_t *));
db.h:   u_int8_t gid[DB_GID_SIZE];
db.h:   u_int8_t  gid[DB_GID_SIZE]; /* Global transaction ID */
db.h:   u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
db.h:   (pointer = (u_int8_t *)(dbt)->data +                \
db.h:       retdata = (u_int8_t *)(dbt)->data + *__p--;     \
db.h:       if (retdlen == 0 && retdata == (u_int8_t *)(dbt)->data) \
db.h:       retkey = (u_int8_t *)(dbt)->data + *__p--;      \
db.h:       retdata = (u_int8_t *)(dbt)->data + *__p--;     \
db.h:       retdata = (u_int8_t *)(dbt)->data + *__p--;     \
db.h:       pointer = (u_int8_t *)(dbt)->data +         \
db.h:       u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
db.h:       if ((u_int8_t *)(dbt)->data + __off + (writedlen) > \
db.h:           (u_int8_t *)(__p - 2))              \
db.h:           writedata = (u_int8_t *)(dbt)->data + __off;    \
db.h:       u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
db.h:       if ((u_int8_t *)(dbt)->data + __off + (writeklen) + \
db.h:           (writedlen) > (u_int8_t *)(__p - 4)) {      \
db.h:           writekey = (u_int8_t *)(dbt)->data + __off; \
db.h:           writedata = (u_int8_t *)(dbt)->data + __off;    \
db.h:       pointer = (u_int8_t *)(dbt)->data +         \
db.h:       u_int32_t __off = ((pointer) == (u_int8_t *)(dbt)->data +\
db.h:       if (((u_int8_t *)(dbt)->data + __off) + (writedlen) >   \
db.h:           (u_int8_t *)(__p - 3))              \
db.h:           writedata = (u_int8_t *)(dbt)->data + __off;    \
db.h:   u_int8_t       *lk_conflicts;   /* Two dimensional conflict matrix */
db.h:   int  (*get_lk_conflicts) __P((DB_ENV *, const u_int8_t **, int *));
db.h:   int  (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
stdint.h:#ifndef __int8_t_defined
stdint.h:# define __int8_t_defined
stdint.h:typedef signed char        int8_t;
stdint.h:typedef unsigned char      uint8_t;
xf86drmMode.h:extern int drmModeAddFB(int fd, uint32_t width, uint32_t height, uint8_t depth,
xf86drmMode.h:          uint8_t bpp, uint32_t pitch, uint32_t bo_handle,