【问题标题】:what are the commonly used libc header files and their functionalities常用的libc头文件有哪些及其功能
【发布时间】:2014-12-13 01:52:00
【问题描述】:

我搜索了很多,找到了https://en.wikipedia.org/wiki/C_standard_library不同头文件的漂亮参考,但没有说明它们定义的常用函数。有没有对常用 C 函数的简要参考?

例如:

#include <getopt.h>
#include <event.h>
#include <libpq-fe.h>
#include <config.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/utsname.h>
#include <pwd.h>
#include <grp.h>

..是我在主要 c 程序中经常看到的标题.. 谁能解释一下它们的作用?

  • 注意:如果我看到一个方法 int XXX(char *YYY) ,我如何才能找到该方法在哪个标头中定义..

【问题讨论】:

  • 你提到的头文件(stdio.h除外)都不是标准的C头文件。
  • @ouah 哦!哎呀,我也没有在我的c编程书籍中找到这个,但是我经常在我朋友的源代码中看到这个,那么它们是什么,它们在哪里定义,它们有什么用?
  • 购买Advanced programming in unix environment,作者是 Richard Stevens 和 Stephen Rago。
  • 对所有这些头文件(C 标准未给出)的一个很好的参考是 POSIX 标准。通常,您应该通过在您最喜欢的搜索引擎中输入标题名称和“opengroup”来轻松地在网络上找到它。
  • 阅读advancedlinuxprogramming.com并学习查看man pages,尤其是intro(2)intro(3),例如在终端中输入man man

标签: c linux gcc libc


【解决方案1】:

查看这里了解什么是标准 C:

http://port70.net/~nsz/c/c11/n1570.html#7

这里是标准 POSIX:

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/contents.html

至于如何找到给定函数的声明位置,请在此处查找函数:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/contents.html

并且正确的标题将显示在概要文本中。您自己的系统手册(例如 *nix 上的 man 页面)可能也会包含此信息,但大约 5% 的时间它们是错误的,因此最好查看权威答案的标准。

【讨论】:

    【解决方案2】:

    对于我所知道的标准 C 库中的一切如何工作,没有详细的解释。我不知道是否有,但请注意实现是平台相关的。因此,您将需要许多解释。

    您最好查看一下文档和您正在使用的 libc 的源代码。例如,glibc 可以在这里找到:docssource

    正如你提到的标题,它在 C 中确实不是标准的(stdio.h 除外),虽然在 linux 中很常用。例如,getopt.h 允许您使用函数进行命令行选项遍历。谷歌搜索每个标题的相关内容非常容易。对于您将看到的每个标题,在一个地方没有标题-含义关系。

    找出哪个标头包含函数通常是通过谷歌搜索完成的。是的,再次。但至少还有其他两种方法可以找到它。首先,如果你使用 IDE,它可以让你“去声明”一个函数,这将有效地找到头文件。其次,您可以grep 遍历所有/usr/include/ 文件(或存储头文件的任何位置)并找到声明函数的位置。

    还要注意,函数在头文件中的声明位置告诉你函数在哪里实现。例如,标准库中的大多数(如果不是全部)函数都是在 glibc(或 ms c 运行时)中实现的。

    【讨论】:

      【解决方案3】:

      实际上,如果您查看漂亮的参考,您可以单击大多数包含文件并在那里找到它们定义的列表函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 2014-08-25
        相关资源
        最近更新 更多