代码之家  ›  专栏  ›  技术社区  ›  lurning too koad

是否可以安全地截断C头文件的文件扩展名为.in的文件?

  •  1
  • lurning too koad  · 技术社区  · 3 年前

    我已经从优步的H3(他们的地理空间库)将一个C库导入到我的Swift项目中(在Xcode中)。一切都如预期的那样工作,但是,主头文件有一个 .in 我不得不截断的文件扩展名后缀 h3api.h.in h3api.h 。我理解 在里面 扩展名用于某种文件配置程序,但我所做的只是拖放 .c .h 文件直接输入到我的项目中,而不需要任何类型的自动文件生成。

    我可以安全地截断吗 在里面 导入到我的项目之前,这个主头文件的文件扩展名后缀?再说一遍,一切都如预期,但是否有任何意外的副作用?

    以下是有问题的文件: https://github.com/uber/h3/blob/master/src/h3lib/include/h3api.h.in

    1 回复  |  直到 3 年前
        1
  •  3
  •   chqrlie    3 年前

    我理解 .in 扩展名用于某种文件配置程序,但我所做的只是拖放 .c .h 文件直接输入到我的项目中,而不需要任何类型的自动文件生成。

    你的直觉是正确的: h3api.h.in 旨在进行预处理以生成 h3api。h 为您的系统量身定制。

    我可以安全地截断吗 在里面 导入到我的项目之前,这个主头文件的文件扩展名后缀?再说一遍,一切都如预期,但是否有任何意外的副作用?

    如果不对这两种情况进行彻底的分析,很难判断 h3api.h.in 文件和您自己的源代码(以及对swift编译器从C头文件中读取的内容的良好理解)。

    原始文件包含具有语法的配置变量 @VARIABLE_NAME@ 但你似乎很幸运,因为预处理器配置的唯一定义是:

    #define H3_VERSION_MAJOR @H3_VERSION_MAJOR@
    #define H3_VERSION_MINOR @H3_VERSION_MINOR@
    #define H3_VERSION_PATCH @H3_VERSION_PATCH@
    

    只要你不使用这些符号,你就应该没事。

    推荐文章