在linux c中搜索 结构体 宏定义 关键字

#查找结构体
grep -Rn --include="*.h" --include="*.c" 'struct ether_header' /usr#查找宏定义
grep -Rn --include="*.h" --include="*.c" '#define PCAP_ERRBUF_SIZE' /usr#查找关键字
grep -Rn --include="*.h" --include="*.c" 'PCAP_ERRBUF_SIZE' /usr#查找函数
man 3 ntohs

今天写程序时,用到了pthread_cond_timedwait 函数,其原型为:int pthread_cond_timedwait(pthread_cond_t  *restrict cond , pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime); 最后一个参数是 timespec 结构体,可惜man里面没有给出具体定义,只好自己去查了。下面就说下具体步骤,也算给大家做个参考,同时欢迎提供更好的方法:

1,符号定义基本都在/usr/include文件夹下可以找到 也有可能在/usr/src下(想想自己程序中引用的头文件就明白了)。那么我们就可以在/usr/include 文件夹下搜索该结构体定义。输入shell命令:grep 'struct timespec'  /usr/include/*.h 回车,观察结果,

从结果中(尤其最后几行),我们可以很容易发现,struct timespec 结果体被定义在了/usr/include/time.h 文件中。

2,打开time.h文件,查看具体定义。操作步骤:输入shell命令:vi /usr/include/time.h 回车 。然后在vi编辑器中搜索struct timespec 即可找到该结构体的具体定义(对vi编辑器使用不熟的童鞋,请自觉google,baidu)。如下图所示:

3,如果查看了该结构体的具体定义,你还不满意,仍旧对结构体成员中__time_t 这个数据类型耿耿于怀的话,那我们就继续。按照查找struct timespec 结构体时的方法,查找 __time_t 到底是由什么基本数据类型来定义的。输入shell命令:grep '__time_t' /usr/include/*.h 回车,结果如下:

注意,图中标出的一句话:它明确的告诉我们:在 /usr/include/bits/types.h 文件中,为我们定义了符号 __time_t 。

4,用vi 编辑器打开文件types.h 文件,搜索 __time_t , 结果如下:

此时,各位童鞋是不是有种泪奔的感觉,反正我有了……可是轻易放弃不是咱程序猿的臭脾气啊,带着一股倔劲,继续!红线框中的那一句告诉我们:__time_t 是从Epoch开始的秒数(Epoch:Unix时间戳,代表一个特定的时间:1970-01-01 00:00:00 UTC,不了解的请baidu),而且被定义成了标准数据类型__TIME_T_TYPE , 接下来,你猜到我要干什么了吗?对了,就是重复上边的步骤,查查 __TIME_T_TYPE 到底是个啥玩意。

5,输入shell命令:grep '__TIME_T_TYPE'  /usr/include/*.h  回车,发现啥也没找到。仔细一想,第四步中,types.h 文件在/usr/include/bits/ 文件夹下,那么它的定义也很有可能就在这哦,接着输入shell命令:grep '__TIME_T_TYPE'  /usr/include/bits/*.h 回车,结果如下:(也可以直接用:grep '__TIME_T_TYPE'  /usr/include/*/*.h  表示搜索本目录和子目录,建议一般别搜索子目录,耗时间呀多层搜索 grep 'TIME_T_TYPE'usr/*/*/*/*/*.h)

看到这里,我们就明白了,__Time_T_TYPE 被定义在了文件typesize.h 中,但我们无需打开文件,注意后边那个单词:__SLONGWORD_TYPE  表示__TIME_T_TYPE  被定义成了 __SLONGWORD_TYPE 类型。我们知道,WORD_TYPE 这种类型基本上都和具体的机器位数有关了。它表示:具体机器上的一个长型字。

6,如果想查看具体自己机器上是什么基本类型的话(机器类型定义在/usr/include/bits/types.h文件中),可以输入shell命令:grep 'SLONGWORD_TYPE'  /usr/include/bits/types.h  回车(如果忘了在哪个文件中,也可以直接搜索所有目录:grep 'SLONGWORD_TYPE'  /usr/include/*/*.h),结果如下:

至此,大功告成,在我的机器上,__SLONGWORD_TYPE  就是 long int 类型……

linux c 查看 结构体 宏 函数 关键字定义相关推荐

  1. linux中c语言结构体详解,Linux C语言结构体-学习笔记

    Linux C语言结构体简介 前面学习了c语言的基本语法特性,本节进行更深入的学习. 预处理程序. 编译指令: 预处理, 宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 c语言表达式工具 ...

  2. FFMpeg4.0相关结构体和函数

    文章目录 相关指令 相关结构体 av_register_all() 已废弃无需添加 avformat_network_init() 初始化网络封装库 AVFormatContext结构体 AVDict ...

  3. linux网络设备驱动结构体,Linux网络设备驱动之设备驱动的注册与注销(二)

    网络设备驱动的注册与注销由 register_netdev( ) 和 unregister_netdev( ) 函数完成,这两个函数的原型为: int register_netdev(struct n ...

  4. linux 中 timeval结构体 - Neddy11 - 博客园

    linux 中 timeval结构体 - Neddy11 - 博客园 linux 中 timeval结构体 网上很多人写到,timeval结构解释错误 ************************ ...

  5. 关于返回结构体的函数

    [前言]写作本文,源于最近回复的 <汇编中函数返回结构体的方法> 一文.在网络上也已经有一些相关文章和相关问题,有的文章已经给出了一部分结果,但总体而言还缺少比较重要的结论.本文以分析 V ...

  6. Golang——结构体创建与初始化、结构体与数组、结构体与切片、结构体与map、结构体作为函数参数、结构体方法、结构体方法继承

    结构体: 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体可以很好的管理一批有联系的数据,使用结构体可以提高程序的易读性,类似于Java的类一样 不能在结构体直接赋值 字段名必须唯一 ...

  7. linux下C结构体初始化

    引子 在看Linux netlink部分的时候看到了这样的写法 struct netlink_kernel_cfg cfg = {.groups = RTNLGRP_MAX,.input = rtne ...

  8. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  9. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

最新文章

  1. Swift - 表格图片加载优化(拖动表格时不加载,停止时只加载当前页图片)
  2. 第七周实践项目3 负数把正数赶出队列
  3. python爬取评论_python爬取网易云音乐评论
  4. html纵向文本,html – 垂直对齐CSS圈中多行的文本
  5. 商业周刊:摩托罗拉下注Android 不成功便成仁
  6. cpu模拟器c语言实现_你写出来的C语言是这样调用硬件的!
  7. svg转css font,css – 如何将.svg文件转换为字体?
  8. python的OS库测试
  9. WebRTC 学习之 WebRTC 简介
  10. 访问vector元素方法的效率比较(转)
  11. drupal_prepare_form 大致是如何工作的 ?
  12. 关于无序分类变量量化的处理思考
  13. python笔记:#010#运算符
  14. Linux学习之在线安装mysql
  15. 软件项目管理期末复习题
  16. 烽火HG680-KA机顶盒 卡开机界面、救砖、强刷失败、ADB教程及固件分享
  17. 传智播客黑马程序员_Hanselminutes播客48-适用于极客和程序员的入门棋盘游戏
  18. 微软模拟飞行2020服务器多少内存,《微软模拟飞行2020》到底有多大?我们的硬盘装得下吗?...
  19. java区间并集_区间并集求解算法实现
  20. SCI、SCI期刊与SCI论文的区别

热门文章

  1. Altium Designer PCB布线只显示单层
  2. socketserver模块用法,多道技术、 基于UDP的简易版QQ
  3. 如何让云存储更好为“我”所用
  4. 树上边分治-求任意两点路径的总和
  5. 使用css修改checkbox选择框的样式
  6. 一个通俗易懂的HMM例子
  7. 模拟线程切换 C++
  8. 交换环境下的冗余及负载分担技术(STP Channel HSRP)
  9. NLP深度学习:近期趋势概述 1
  10. Ubuntu14搭建配置青岛大学OJ系统