前言:
今天你们对“菜鸟学c语言怎么搜题”大体比较关切,我们都想要学习一些“菜鸟学c语言怎么搜题”的相关内容。那么小编也在网摘上收集了一些有关“菜鸟学c语言怎么搜题””的相关知识,希望你们能喜欢,咱们一起来学习一下吧!c标准基本库函数:libc、glibc的关系
glibc 和 libc 都是 Linux 下的 C 函数库。
libc 是 Linux 下的 ANSI C 函数库;glibc 是 Linux 下的 GUN C 函数库。
Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到它。
ANSI C 和 GNU C 有什么区别呢?
ANSI C 函数库是基本的 C 语言函数库,包含了 C 语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:
<ctype.h>:包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;<errno.h>:定义用来报告错误条件的宏;<float.h>:包含系统的浮点数大小限制;<math.h>:包含数学库函数的函数原型;<stddef.h>:包含执行某些计算 C 所用的常见的函数定义;<stdio.h>:包含标准输入输出库函数的函数原型,以及他们所用的信息;<stdlib.h>:包含数字转换到文本,以及文本转换到数字的函数原型,还有内存分配、随机数字以及其他实用函数的函数原型;<string.h>:包含字符串处理函数的函数原型;<time.h>:包含时间和日期操作的函数原型和类型;<stdarg.h>:包含函数原型和宏,用于处理未知数值和类型的函数的参数列表;<signal.h>:包含函数原型和宏,用于处理程序执行期间可能出现的各种条件;<setjmp.h>:包含可以绕过一般函数调用并返回序列的函数的原型,即非局部跳转;<locale.h>:包含函数原型和其他信息,使程序可以针对所运行的地区进行修改。地区的表示方法可以使计算机系统处理不同的数据表达约定,如全世界的日期、时间、美元数和大数字;<assert.h>:包含宏和信息,用于进行诊断,帮助程序调试。
上述库函数在其各种支持 C 语言的 IDE 中都是有的。
glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。Linux下面的标准c库不仅有这一个,如uclibc()、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的。glibc在/lib目录下的.so文件为libc.so.6。
libc 实际上是一个泛指。凡是符合实现了 C 标准规定的内容,都是一种 libc 。
glibc 是 GNU 组织对 libc 的一种实现。它是 unix/linux 的根基之一。
微软也有自己的 libc 实现,叫 msvcrt 。
嵌入式行业里还常用 uClibc ,是一个迷你版的 libc 。
1、C语言库是用来干什么的?
编程人员所提到的库,其英文是library,到底是什么呢?简单说就是一些通用的程序代码被生成文件存储起来了,以后任何人写程序时如果需要用到这些通用代码只需要调用库函数接口就可以了。比如我们C程序里通常用的printf函数,就是用来将程序里的信息输出到屏幕上的。如果要求每个写程序的人都自己来写个函数去调用内核接口实现屏幕输出,那将是极大的浪费,所以前人已经写好这个函数相关的库了,在我们Linux系统中,这个库是GNU C语言库glibc,就是这个文件/usr/lib/libc.so。当然,如果要使用一个库文件,首先得有个头文件来定义库文件里的每个函数,比如/usr/include/stdio.h,我们写程序时,只需要#include 就可以用printf来向屏幕输出信息了。
后面我们讲到如何自己生成库文件时,大家一定会相当明白,现在先知道库的基础知识吧。
2、如何获得库和手册
那么我们看一看stdio.h都有什么。如果你用Linux的话,这个文件通常位于/usr/include/stdio.h
这个文件中都有什么(我们先跳到127行)
extern FILE *stdin;extern FILE *stdout;extern FILE* stderr;
这三行的意思是,声明了这三个FILE*,而这三个指针的具体实现在某个外部库中,而这个库将会在连接时被引入。
在第326行:
extern int fprintf (FILE *__restrict __stream, const char *__restrict __format, ...);extern int printf (const char *__restrict __format, ...);extern int sprintf (char *__restrict __s, const char *__restrict __format, ...) __THROWNL;......extern int scanf (const char *__restrict __format, ...) __wur;......
这些行的意思是,声明了这么多的函数,比如fprintf, printf, fscanf, scanf,这些函数的实现在某个外部的库中。
就是说,stdio.h中的代码,其作用是引用了某个外部库中的很多函数和变量。
这个外部库的名字叫做,libc,是默认情况下连接器会自动连接的一个库。你所使用的stdio.h中的功能,就是由libc实现的,而#include <stdio.h>,就是引用libc中的这些功能的方法。
标签: #菜鸟学c语言怎么搜题