swift进阶

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

2020-12-20  本文已影响0人  markhetao

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. 新建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
上一篇下一篇

猜你喜欢

热点阅读