林州企业网站建设,东游科技网站建设,松江大学城网站建设,wordpress采集同步下面以查找结构体FILE的原始定义为例#xff1a;1、我们知道#xff0c;这些定义一般都在 /usr/include下面#xff0c;所以首先到达目录 /usr/include 下面2、用grep命令搜索 #xff0c;即grep FILE stdio.h,可得以下结果(部分)#xff0c;FILE在stdio.h中定义有好多地方…下面以查找结构体FILE的原始定义为例1、我们知道这些定义一般都在 /usr/include下面所以首先到达目录 /usr/include 下面2、用grep命令搜索 即grep FILE stdio.h,可得以下结果(部分)FILE在stdio.h中定义有好多地方提到过。#if !defined __need_FILE !defined __need___FILE# define __need_FILE# define __need___FILE#endif /* Don\t need FILE. */#if !defined __FILE_defined defined __need_FILEstruct _IO_FILE;typedef struct _IO_FILE FILE;#if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \__USING_NAMESPACE_STD(FILE)3、从上面的搜索结果可以看到实际上是把 _IO_FILE 定义为FILE于是又要查找 _IO_FILE的定义。4、用grep命令即执行 grep \_IO_FILE\ *.h得到以下结果(部分因为全部太多了我们要从大量的结果中找到关键内容当然也可以通过管道 二次使用grep)_G_config.h:#define _G_HAVE_IO_FILE_OPEN 1_G_config.h:#define _G_IO_IO_FILE_VERSION 0x20001libio.h:struct _IO_jump_t; struct _IO_FILE;libio.h: struct _IO_FILE *_sbuf;libio.h:struct _IO_FILE {libio.h: struct _IO_FILE *_chain;libio.h:#ifdef _IO_USE_OLD_IO_FILE5、我们看到了libio.h:struct _IO_FILE { 这一行所以知道 它是在libio.h中定义的打开该文件即可看到定义。注意有时候有些宏定义还会调用其他的宏定义如在中有如下定义 #define S_IRUSR __S_IREAD __S_IREAD本身也是个宏我们不知道它定义在何处可以用之前的方法继续寻找__S_IREAD但有时候会在/usr/include/的子文件夹下这时候就不好寻找了通常我们看到 #define S_IRUSR __S_IREAD 这样的定义可以沿着此语句往代码的前方找看到的第一个#include文件如 __S_IREAD 就是在这个文件下定义的然后查找此文件可以看到如下声明#define __S_IREAD 0400 /*Read by owner.*/linux内核头文件/usr/include/ 目录下的.h文件中会include其它头文件但通常不会把调用的其它头文件列在一起而是include一个头文件之后紧接着的语句是会用到这个头文件中的宏或其它声明的变量函数结构体等等。而linux内核源码中的.c文件等会把所有调用的文件列在程序的开头。如/usr/src/kernel/linux-2.6.38.6/mm/memory.c程序开头如下#include #include #include #include #include ..................