今天在学习C的库函数memchr时,想看看其实现的源码,所以去网上下载了glibc的2.37版本。下载入口:https://www.gnu.org/software/libc/
下载后的压缩包十几M,结果解压后发现有两百多M。
里面的内容概览如下:
目录结构大体是一个文件夹对应一个库,以string.h库为例,就在string文件夹中。
在打开文件夹之前,原以为一个库文件夹里就是一个h头文件加上一个对应的c文件。
结果点进去一看,有好多文件:
找到了一个string.h,但愣是没找到string.c
再看看这些c文件,发现了好些熟悉的名称:
难道一个文件中就写了一个函数吗?
带着这些疑惑,开启了glibc的初步探索之路。
string.h
在string.h中,函数声明前都加了extern。
在较新的标准里,函数声明前extern加不加都是一样的效果。
这里基本都加了,大概是为了兼容较老的代码习惯。
extern "C"
extern "C++"