繁体   English   中英

stdlib.h,stdio.h中所有函数和常量的引用?

[英]Reference of all functions and constants in stdlib.h, stdio.h?

我想查找C库中定义的所有函数,常量和类型: stdlib.hstdio.hctype.h等。因此,在C程序中时,我会执行: #include <stdlib.h>#include <stdio.h>我想知道我从中得到的所有函数,常量和类型是什么?

在计算机上本地执行此操作的最简单方法是什么? 我对在线参考文献不太感兴趣,特别是如果它们不是官方的。

是否有手册页列出了例如stdlib 也许GNU info程序对此具有文档? 还是我必须找到一个实际的头文件并进行查找?

我更喜欢通用的方法,但是如果系统之间存在差异,我很好奇如何在Mac和Linux上做到这一点?

您的术语stdlib定义不明确。 C编程语言中有一个“标准I / O库”,以及一个stdlib.h头文件。

对于C标识符,这是ISO C和POSIX标识符的概述。

除此之外,您还可以使用以下命令查看库文件中的符号

nm -AP /path/to/libfoobar.a

更新资料

要检查编译器看到的标题形式,请查看预处理结果( -E ):

$ gcc -E /usr/include/stdlib.h|less
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
[...]
typedef struct
  {
    int quot;
    int rem;
  } div_t;
typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
[...]
extern long int random (void) __attribute__ ((__nothrow__ , __leaf__));
[...]

当包含标准C标头之一时,至少可以声明三种类型的标识符:

  • C标准指定的标识符。 有关这些信息的权威来源是C标准以及您正在使用的C实现的文档。

  • C语言扩展的标识符。 例如,标头可以声明POSIX函数的标识符。 标头只有在您通过在包含标头之前定义某些预处理器符号来请求它们时,才声明此类标识符。

  • C实现内部使用的标识符。 这些标识符通常以下划线开头,后跟另一个下划线或大写字母,因为C标准保留了这些标识符。 您可以通过检查C实现中的实际头文件来发现这些标识符,但是除非您的实现文档允许使用它们,否则您不应使用它们。

总体而言,如果您想了解C在标准标头中提供的内容,则应阅读C标准(有关权威信息)或一本不错的C教科书(有关教程信息)。 如果您想了解标头中还有什么,则实现可以将各种内容放入标头中,因此找出其中的方法是阅读实现的文档和/或检查头文件,然后找到其提供的其他内容的文档 ,例如POSIX文档

您在计算机上询问来源。 您的C实现可能随附文档,Unix包含可通过man命令访问的文档。 虽然您可以检查实际的头文件,但重要的是要了解头文件的当前内容不构成有关将来行为的任何保证。 在将来的版本中,任何内部标识符都可能会更改,并且标准标识符的行为可能会根据C标准的允许而更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM