以查找RedHat9下,/usr/include/stdio.h文件中的FILE变量为例。
1.用vi打开上述文件,搜索得到如下相关上下文。
__BEGIN_NAMESPACE_STD
/* The opaque type of streams. This is the definition used elsewhere */
typedef struct _IO_FILE FILE;
__END_NAMESPACE_STD
2.无法查找到\struct _IO_FILE,它的定义应该在其它的头文件中。应用如下方法找到。
一种比较愚蠢的方法是
grep -rn "struct _IO_FILE {" --include="*.h" /usr/include
得到如下结果
/usr/include/libio.h:263:struct _IO_FILE {
更好的方法是通过使用gcc的预编译功能-E。
gcc -E /usr/include/stdio.h | less
然后找到
# 263 "/usr/include/libio.h" 3
struct _IO_FILE {
int _flags;