找回密码
 注册
查看: 2856|回复: 12

菜鸟提问:linux下c语言有哪些头文件啊?

[复制链接]
发表于 2003-2-5 14:06:48 | 显示全部楼层 |阅读模式
我今天刚学,好多头文件不知道做什么用的,我看的书是《Linux下的c语言编程》。这本书上没有介绍头文件的。而且,好象其他的c语言书上也没有介绍头文件的。哪位老鸟帮个忙,介绍一下,给个链接也好啊。谢谢了。
ps:Linux下的c和Tc有什么区别啊???
 楼主| 发表于 2003-2-6 14:44:59 | 显示全部楼层
我知道这个问题很菜,请各位指点一下小弟吧。
回复

使用道具 举报

 楼主| 发表于 2003-2-6 19:55:08 | 显示全部楼层
我去/usr/include下面看过了,没什么用。不是对头文件的介绍,而是版权之类的信息。用man 也看不到。
回复

使用道具 举报

发表于 2003-2-7 02:07:32 | 显示全部楼层
你是说头文件的用法吗?和其他平台差不多的.
回复

使用道具 举报

 楼主| 发表于 2003-2-7 19:34:11 | 显示全部楼层
多谢!终于有人说话了。
我知道和其他平台差不多,都是c语言嘛。可在tc下的头文件的用途也不是太清楚。好象,linux下的c用的头文件种类不少啊。能给解释一下么?嫌麻烦的话,指条路也好啊。
回复

使用道具 举报

发表于 2003-2-8 02:30:56 | 显示全部楼层
呵呵,没人回答我想是因为没有弄懂你的问题是什么。
首先你要知道头文件的作用,它主要用来定义一些宏、函数原形,如果是C++的话还可用来定义一个类。特别在C++中,所有的函数都要有相应的原形定义。
语句: #include <xxxxx.h>  告诉编译器把xxxxx.h文件包含进来;所谓包含,就是相当于把xxxxx.h文件中的内容和调用这个命令的文件内容合并起来,就好象是同一个文件的内容一样,这样便于关于代码,也便于别人了解程序。如果要使用一个库,也就是使用预先编译好的函数(包含在库文件中,在windows下是.lib文件,Linux下是.a文件或.so文件,.so文件是动态的库,.a文件是静态的库;至于动态静态的含义我也不清楚,你可以参考一下这方面的书)。如果要使用某个库里的某个函数,不论是C还是C++,都得让编译器知道调用的函数的原形(包含了函数名、参数类型和参数个数等信息),这样编译器才能做参数的类型检查。所以都要在调用这个函数的文件里先include这个库的头文件,它包含了这个库里所有的函数的原形。如果在a.c文件中include了stdio.h头文件,又在b.c中include了a.c文件,那么就相当于也include了stdio.h头文件。不过你得让编译器知道头文件在哪。编译器默认的搜索目录在Linux下一般是编译的当前目录、/usr/include还有其他的一些,在include语句中指定的头文件可以使用相对路径和绝对路径(对吗?请各位指正)。同样,要使用一个库,就得在编译的时候向编译器指定库文件,在命令行中使用gcc的话,使用参数 -l 来指定。(是hijklmn的那个l )。-l参数后直接加上库文件的文件名的一部分,中间不要加空格了。不过库文件的命名规则我忘了,你得查查gcc的参数使用,里面会谈到怎么使用-l参数的。可以使用多个-l参数来指定多个库,另外不在/usr/lib等默认搜索目录下的库文件还要用另外的参数指定路径的。具体的我也忘了。你可以在www.google.com中搜索关键字:“gcc 参数”就可以找到相关资料了。
建议找些Linux下编程环境方面的资料,比如编译器的使用、集成开发环境的使用等。也可以在google上搜到。
另外,C语言和C++语言都是有标准的,大多数编译器都支持这些标准。只要不用和具体操作系统相关的函数,使用比较好的编码风格,一般都有比较好的移植性。(不过是源代码级的移植。拿到新的平台下都要再编译才能用的。Java是一次编码,到处翻译。C和C++是一次编码,到处改改再编译。
Hoho~~~~总之,多到网上搜索一些资料看看。很多问题都有专门的文章的。看了之后有什么问题在自己尝试一下,再不能解决还可以来论坛问。
Hoho~~~~今天就到这吧。
回复

使用道具 举报

 楼主| 发表于 2003-2-8 20:10:42 | 显示全部楼层
多谢了。看你的解释,我知道我问的问题确实是太笼统了。
我想问的是,在进行不同的编程时,需要哪些头文件;那些头文件又能用在什么地方。
比如,socket编程要用到:
sys/types.h:数据类型定义
sys/socket.h:提供socket函数及数据结构
netinet/in.h:定义数据结构sockaddr_in
arpa/inet.h:提供IP地址转换函数
netdb.h:提供设置及获取域名的函数
sys/ioctl.h:提供对I/O控制的函数
sys/poll.h:提供socket等待测试机制的函数
其他在网络程序中常见的头文件
unistd.h:提供通用的文件、目录、程序及进程操作的函数
errno.h:提供错误号errno的定义,用于错误处理
fcntl.h:提供对文件控制的函数
time.h:提供有关时间的函数
crypt.h:提供使用DES加密算法的加密函数
pwd.h:提供对/etc/passwd文件访问的函数
shadow.h:提供对/etc/shadow文件访问的函数
pthread.h:提供多线程操作的函数
signal.h:提供对信号操作的函数
sys/wait.h、sys/ipc.h、sys/shm.h:提供进程等待、进程间通讯(IPC)及共享内存的函数

以上是用goolge搜到的。可这只是针对一部分的。
我不知道在哪儿有介绍每个头文件的用途的文章,我真正想知道的是这个问题。

(当然还是很感谢sjinny)
回复

使用道具 举报

发表于 2003-2-9 11:52:06 | 显示全部楼层
这个……
倒~~~~~
没必要知道每个头文件的作用啊。
要用到什么函数的时候,找到对应的头文件就可以了。
回复

使用道具 举报

 楼主| 发表于 2003-2-9 20:55:52 | 显示全部楼层
那个。。。。
不要倒~~~~~~
那我在哪儿找该用哪些头文件啊?
比如说要用open,write之类的函数,该从哪儿找啊?书上都是直接在例子里给出,却并没有说明。
回复

使用道具 举报

发表于 2003-2-9 23:06:32 | 显示全部楼层
man open
可打开Konqueror,在地址栏里输入man:/open
就会告诉你函数头文件,声明,等。
回复

使用道具 举报

 楼主| 发表于 2003-2-10 15:18:43 | 显示全部楼层
多谢,我去试试,不过地址栏是什么dd?是x-windows下的么?
回复

使用道具 举报

发表于 2003-2-10 23:52:47 | 显示全部楼层
在终端用man open
man  printf
man scanf
etc..
回复

使用道具 举报

 楼主| 发表于 2003-2-12 17:58:49 | 显示全部楼层
多谢了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-25 19:55 , Processed in 0.032687 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表