《Advanced Swift》第十三章 互用性:讀書筆記 一、封裝一個用C編寫的程序庫 備註

一、封裝一個用C編寫的程序庫

        但 Swift 無法直接處理 C 的頭文件,它的依賴關係是基於模塊 (modules) 的。爲了讓一個 用 C 或 Objective-C 編寫的程序庫對 Swift 編譯器可見,它們必須按照 Clang 模塊的格式提供 一份 模塊地圖 (module map)。這份地圖最重要的功能,就是列出構成模塊的頭文件。

/// 將 'text' (假設是 UTF-8 編碼的字符串,且長度爲 'len') /// 從 CommonMark Markdown 轉換爲 HTML,
/// 返回一個以 null 結尾的 UTF-8 編碼的字符串。
/// 調用者負責對返回的緩衝區進行釋放。
char *cmark_markdown_to_html(const char *text, int len, int options);

// Swift 中的函數接口。
func cmark_markdown_to_html
(_ text: UnsafePointer<Int8>!, _ len: Int, _ options: Int32) -> UnsafeMutablePointer<Int8>!

// 封裝後的接口
func markdownToHtml(input: String) -> String {
let outString = cmark_markdown_to_html(input, input.utf8.count, 0)!
defer { free(outString) }
return String(cString: outString)
}

備註

這章內容過於瑣碎,另外沒有多少新的內容,暫時級導這裏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章