该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。
其教学视频见:[C++高级教程]从零开始开发服务器框架(sylar)
上一篇:C++服务器框架开发5——日志系统LogAppender/IO类“3种stream”/双感叹号
C++服务器框架开发6——日志系统logFormatter/size_t学习
- 目前进度
- size_t学习
- 大致介绍
- size_t与int
目前进度
学习到第四个视频12分06s,up对log.h中的LogFormatter进行了定义。从上一节内容可以发现,该类用来做格式化然后输出的。
要点:
- log.h中的LogFormatter声明,其中声明了1个内部类FormatItem用于日志内容项的格式化、1个format函数用于格式化日志文本、2个成员变量m_pattern(日志格式模板)和m_items(日志格式解析后格式)。
2. log.cc中,定义了LogFormatter构造函数、LogFormatter::format函数、LogFormatter::init函数(还未定义完)。
size_t学习
上一节的最后一张图可以看到,有一个变量定义的类型是size_t,由于我没接触过,所以这次学一下。
参考自文章1
大致介绍
无符号整型、在32位系统中为32位在64位系统中为64位。
#ifndef __HELLOWORLD__
#define __HELLOWORLD__
#include<iostream>
#endif
int main() {
size_t sizet1 = -5;
std::cout << sizet1 << std::endl; //无符号数,所以赋值一个负数时,打印出来会出错。
size_t sizet2 = 5;
std::cout << sizet2 << std::endl;
return 0;
}
size_t与int
- size_t在32位架构中被定义为:typedef unsigned int size_t;
- size_t在64位架构中被定义为:typedef unsigned long size_t;
- size_t是无符号的,并且是平台无关的,表示0-MAXINT的范围;int是有符号的;
- int在不同架构上都是4字节,size_t在32位和64位架构上分别是4字节和8字节。
- 如果定义数组时用的是int,则在64位机子上,数组长度实际上只能开到2的32次,但是如果用size_t来定义数组长度,则可以自适应地得到能开辟的最大长度。