《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)
}

备注

这章内容过于琐碎,另外没有多少新的内容,暂时级导这里

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