美文网首页swift进阶
swift进阶十一:@_silgen_name(自动搜索C函数)

swift进阶十一:@_silgen_name(自动搜索C函数)

作者: markhetao | 来源:发表于2020-12-20 21:41 被阅读0次

    swift进阶 学习大纲

    上一节分析Mirror源码分析时,我们发现了一个内部函数@_silgen_name

    1. 常规c函数调用
    2. @_silgen_name

    1. 常规c函数调用

    1. .h文件对外声明函数
    2. .c文件实现函数
    3. 创建XXX-Bridging-Header.h桥接文件,import对外头文件
      1. 新建swift语言的命令行项目,添加c文件(test.h,test.c,桥接文件):
        image.png
      1. test.h对外声明ht_add函数:
        image.png
      1. test.c实现ht_add函数:
        image.png
      1. SwiftCTest-Bridging-Header.h桥接头文件中导入test.h文件:
        image.png
      1. main.swift文件中,正常调用c函数ht_add
        image.png

    2.@_silgen_name

    @_silgen_name功能:

    自动搜索调用C函数

    • C函数不具备重载功能,编译后符号是在函数名前加_
      (如test函数,编译后符号名_test
    • 所以C函数具备全局唯一性。正是利用这一特性,@_silgen_name可自动搜索和调用c函数

    @_silgen_name使用:

      1. 直接生成.c实现文件
      1. swift文件中使用@_silgen_name传入c函数,并创建swift替换函数,直接调用swift替换函数,即可实现c函数
      1. 新建swift语言的命令行项目,仅添加test.c文件:
        image.png
    • 2.test.c直接导入stdio.h基础库,实现ht_add函数:

      image.png
    • 3.main.swift文件中,@_silgen_name传入c函数(ht_add),并创建swift替换函数(swift_ht_add),直接调用swift替换函数(swift_ht_add),即可实现c函数

      image.png
    • Done~ (是不是非常简单)

    相关文章

      网友评论

        本文标题:swift进阶十一:@_silgen_name(自动搜索C函数)

        本文链接:https://www.haomeiwen.com/subject/cbyxnktx.html