最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

TinyFormat 源碼閱讀(二)

2022-09-06 01:04 作者:Meriex  | 我要投稿

那從這一章開始我們正式進(jìn)入 tinyformat ,首先是 tfm::format 函數(shù),一起來看一下它的定義:

那這里的話和上一章的代碼風(fēng)格基本類似,同樣是借助 TINYFORMAT_FOREACH_ARGNUM 來生成出多個(gè)版本的 format 函數(shù),而功能的實(shí)現(xiàn)則放在 vformat 中我們待會(huì)再來看,首先看一下這里向 vformat 中傳入的參數(shù)有一個(gè) makeFormatList ,通過之前的用例我們應(yīng)該知道這里傳入的是用于填充 fmt 串的參數(shù),一起來看一下它的定義:

這里開始有更多需要拓展的內(nèi)容了,我們比較熟悉的 TINYFORMAT_FOREACH_ARGNUM 先放在一邊,這里的返回值是在 detail 命名空間下的 FormatList 類型,那同樣一起來看看它的定義:

可以看到這個(gè)類的功能就是把傳入的參數(shù)一起打包封裝到 FormatListNm_formatterStore 成員中,構(gòu)造函數(shù)結(jié)合 init 實(shí)現(xiàn)了一個(gè)遞歸的初始化方式(TINYFORMAT_PASSARGS_TAIL 的實(shí)現(xiàn)從第二個(gè)參數(shù)開始取值,所以每次調(diào)用參數(shù)都會(huì)減少):

看完了構(gòu)建參數(shù)的過程,我們回到本章真正的核心, vformat 函數(shù),它的定義是這樣的:

其中 FormatListRef 是指向 FormatListconst 引用:

如果之前只關(guān)注 FormatListN 而沒有看到 FormatList 的話,前者是后者的父類,在構(gòu)造函數(shù)中通過 : FormatList(&m_formatterStore[0], n) 傳遞了初始化好的參數(shù)數(shù)組指針 m_args 和參數(shù)長(zhǎng)度 m_N

這里我們先拋開一些錯(cuò)誤狀態(tài)的處理,先來看主要流程,傳入的 fmt 串要通過 printFormatStringLiteral 函數(shù)進(jìn)行第一步處理,看一下它的定義:

這段代碼實(shí)際上 c 風(fēng)格比較明顯,作用的話就是找到 fmt 中的第一個(gè)需要填充參數(shù)的位置并返回, c-fmt 通過兩個(gè)指針相減算出子串的長(zhǎng)度,返回剩余部分。

篇幅原因本節(jié)關(guān)于 TinyFormat 的源碼閱讀就先到這里,下一節(jié)我們?cè)倮^續(xù)閱讀串解析以及流狀態(tài)的部分,再會(huì)!

TinyFormat 源碼閱讀(二)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新丰县| 南岸区| 奉化市| 迁西县| 澎湖县| 五大连池市| 平塘县| 湟源县| 比如县| 渭南市| 承德县| 灌阳县| 额敏县| 巴彦淖尔市| 洛南县| 交口县| 河南省| 江城| 长宁县| 陆良县| 凤城市| 白河县| 甘谷县| 资中县| 鄂伦春自治旗| 新沂市| 印江| 游戏| 伊吾县| 芦溪县| 巧家县| 井研县| 陆丰市| 阳新县| 中山市| 卢氏县| 无锡市| 灵台县| 九龙坡区| 阿克陶县| 城步|