2021SC@SDUSC
目录
本篇进入message.cc的具体代码学习。本篇以及接下来的两篇将细致分析message.cc的具体代码
实现。适合初学者(因为作者也比较菜,如果有错误,请指出!感激不尽!)
我们知道一篇代码想要实现,离不开标准库。那么首先我们从这篇代码的每个库介绍起,一些不常用的就当作扩展啦!
errno.h定义了通过错误码来回报错误资讯的宏(宏(英语:Macro)是一种批量处理的称谓。)
简单理解下宏就是:“一些命令组织到一起,完成一个动作,一个任务。”
举个栗子!errno.h中定义的#define ENOFILE 2 /* No such file or directory */,就是没有该文件或目录啦~
这里说一句,errno.h中定义的宏是一个 int 型态的左值,也就是能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。
参考网址:(55条消息) errno.h 详解_ultraji的博客-CSDN博客
stdlib头文件即standard library标准库函数头文件stdlib,头文件里包含了C、C++语言的最常用的系统函数该文件包含了C语言标准库函数的定义,是一个非常!非常!重要的库!
stdlib .h 头文件定义了四个变量类型、一些宏和各种通用工具函数。
1)size_t
这是无符号整数类型,它是 sizeof 关键字的结果。
(size_t已经是老朋友啦!上几篇都有它~)
2)wchar_t
这是一个宽字符常量大小的整数类型。
(宽字符是宽度始终为 16 位的多语言字符代码。 字符常数的类型是 char ;对于宽字符,类型是 wchar_t 。)
3)div_t
这是 div 函数返回的结构。
(DIVc语言中的div函数,是将两个整数相除,返回商。)
4)ldiv_t
这是 ldiv 函数返回的结构。
(Idiv函数,是分子除以分母,定义:C 库函数 div_t div(long int numer, long int denom) 把 numer(分子)除以 denom(分母)。)
1)NULL
这个宏是一个空指针常量的值。
2)EXIT_FAILURE
这是 exit 函数失败时要返回的值。
(C 库函数 void exit(int status) 立即终止调用进程。)
3)EXIT_SUCCESS
这是 exit 函数成功时要返回的值。
4)RAND_MAX
这个宏是 rand 函数返回的最大值。
(C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。嗯?伪随机数?密码学不开心了!)
5)MB_CUR_MAX
这个宏表示在多字节字符集中的最大字符数,不能大于 MB_LEN_MAX。
(多字节字符集 (MBCS) 是一种替代 Unicode 以支持无法用单字节表示的字符集(如日文和中文)的方法。 )
一共有28个,实在是太多啦(滑稽),这里就先举几个栗子啦!(栗子!糖醋板栗!!)
double atof(const char *str)
把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。
void *calloc(size_t nitems, size_t size)
分配所需的内存空间,并返回一个指向它的指针。
void free(void *ptr)
释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。
菜鸟教程的这篇教程最后有一个评论很不错!这里就借用一下啦:
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
上面的链接应该都可以点击!可以查看这个函数的具体介绍~
参考网站:C 标准库 – <stdlib.h> | 菜鸟教程 (runoob.com)
string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
其中库变量定义的只有一个size_t,同<stdlib.h>中;库宏定义的也只有一个:NULL;库函数中定义了22个函数。这里就简单的举两个例子啦:
void *memcpy(void *dest, const void *src, size_t n)
解释:从 src 复制 n 个字符到 dest。
int strcmp(const char *str1, const char *str2)
解释:把 str1 所指向的字符串和 str2 所指向的字符串进行比较。
参考网站:C 标准库 – <string.h> | 菜鸟教程 (runoob.com)
stdint.h是 C99 中引进的一个标准C 库的头文件 。<stdint.h> 定义了 int16_t 、 uint32_t 、 int64_t 等整型,一般用于需要确定大小的整型时。
在stdint.h的代码中随机抽取典型的例子来打比方:
# if __WORDSIZE == 64
typedef long int int64_t;
当字长是64位时,这里使用了typedef,用int64_t代替了传统的定义long int。
# define INT8_MIN (-128)
使用标识符INT8_MIN来代替-128。(#开头是预处理命令)
温馨小提示:
typedef与#define
两者的区别如下:
#define 进行简单的进行字符串替换。 #define 宏定义可以使用 #ifdef、#ifndef 等来进行逻辑判断,还可以使用 #undef 来取消定义。
typedef 是为一个类型起新名字。typedef 符合(C语言)范围规则,使用 typedef 定义的变量类型,其作用范围限制在所定义的函数或者文件内(取决于此变量定义的位置),而宏定义则没有这种特性。
参考网址:(55条消息) 《C语言》stdint.h 文件_BelleDiao的博客-CSDN博客
(55条消息) typedef介绍_liitdar的博客-CSDN博客_typedef
<utility>头文件定义一个pair类型。
具体的代码在如下网址:#include <utility> - 范仁义 - 博客园 (cnblogs.com)