【答疑解惑】如何知道要包含哪个头文件

之前遇到一个同学问一个问题,他在c源文件中使用bool变量,然后编译的时候提示bool没有定义。不知道怎么办。其实对于初学者来说,遇到的编译错误最多的就是某某变量或函数没有定义,或者有的时候函数有定义,编译过了但是在链接的时候提示找不到函数符号。这类错误其实都是非常好解决的。下面介绍一种在linux下编程如何更好更快的解决此类问题。

对linux稍微有点了解的同学估计都知道linux下有一个man命令,但是会用的人估计并不多。man分为很多部分:

1 用户命令, 可由任何人启动的。

2 系统调用, 即由内核提供的函数。

3 例程, 即库函数,比如标准C库libc。

4 设备, 即/dev目录下的特殊文件。

5 文件格式描述, 例如/etc/passwd。

6 游戏, 不用解释啦!

7 杂项, 例如宏命令包、惯例等。

8 系统管理员工具, 只能由root启动。

9 其他(Linux特定的), 用来存放内核例行程序的文档。

n 新文档, 可能要移到更适合的领域。

o 老文档, 可能会在一段期限内保留。

l 本地文档, 与本特定系统有关的。

要查属于哪一部分的,就用哪一部分的编号在命令之前。

比如,我现在用到了read函数,但是我不知道read需要保护什么头文件,read的参数都是什么样子的,我们当然可以上网去查read,那如果使用的linux系统,那就有一个非常快的方法,就是在linux的终端下输入命令

man 2 read

就会出现关于read函数的所有描述,包括所需要的头文件,函数原型,函数返回值等等。

再举一个例子,我们用到了log函数,这个函数不在标准c库中,那我怎么知道他需要链接那个库,需要保护什么头文件呢?

同样的,执行命令

man 3 log

就会出现log的所有信息。有环境的同学可以马上验证一下。

这里只是抛砖引玉的目的,更详细的使用,比如安装中文版man,安装更全的man等等可以从网上获取到。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

深度数据包检测DPI开发解析

深度数据包检测(DPI) 深度数据包检测(Deep packet inspection,缩写为 DPI)是一种特殊的网络技术,一般网络设备只会查看以太网头部、I...

57770
来自专栏专业duilib使用+业余界面开发

mysql5.7 安装,服务启动失败无data目录处理

25530
来自专栏java一日一条

同步和异步的区别

答案一: 1.异步传输 通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步...

10040
来自专栏Small Code

MATLAB批量文件重命名(详细解释)

这段时间在用 matlab 做手写数字识别,处理样本的时候需要对样本文件进行重命名,可是有好多,总不能一个一个重命名吧,于是上网百度了好多,不过大多都一样,但是...

37970
来自专栏ChaMd5安全团队

巅峰极客 第二场 WriteUp

1 返回地址覆盖为printf(func_got)/write(1,func_got,4)来leak libc,并将printf/write返回地址设为game...

18930
来自专栏Java技术分享

30天轻松掌握JavaWeb-学习目录

17.使用beanUtils操纵javabean

28560
来自专栏海说

6、Java包的命名与划分

包的命名与划分 (一)使用Java包的目的 在了解做一件事之前,需要了解做这件事的目的。而使用Java包的目的大概如下: 1    对类进行归类,便于开发查找。...

33800
来自专栏CRPER折腾记

Vue折腾记 - (2)写一个不大靠谱的面包屑组件

我把页面标题和面包屑封装到一起..就不用涉及到组件的通讯了, 不然又要去监听路由或者依赖状态去获取

17420
来自专栏老九学堂

从Hello World说程序运行机制

学习任何一门编程语言,都会从Hello World 开始。对于一门从未接触过的语言,在短时间内我们都能用这种语言写出它的Hello World。然而,对于Hel...

41480
来自专栏Golang语言社区

Goroutine(协程)为何能处理大并发?

简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依旧保持高性能。 进程、线程、协程的关系和区别: 进程拥有自己独立的堆和栈,既不共享堆,亦不共享...

36160

扫码关注云+社区

领取腾讯云代金券